java String拼接时的问题汇总

网友投稿 290 2022-12-13


java String拼接时的问题汇总

刚才发现了一个小问题,比如我们设置一个字符串对象test并初始化为null,然后执行test+="abc";,此时test的值不是abc,而是nullabc。这是因为我们实际上是让test="abc"+null;,此时null会被强制转为String类型,其值就是"nullhHMufFq".例如下面的例子:

String test=null+"abc";

System.out.println(test);

输出就是nullabc

所以我们在使用+=运算符的时候要先判断是不是null,如果是的话应该直接赋值

话又说回来,熟悉String原理就能知道,如果使用+=来创建字符串,会在字符串常量池中产生很多不需要的子串对象,所以不鼓励使用String的拼接方式一步步创建字符串,应该使用StringBuilder 和append()方法。这些类的对象能够被多次的修改,并且不产生新的未使用对象。

并且这两个类是提供了append()方法的,可以传入char或者String,使用很方便。最后要输出字符串的时候直接toString()即可。

内容扩展:

java拼接字符串、格式化字符串方式

//+

String arg0 = "Bob";

String arg1 = "Alice";

System.out.println("hello," + arg0 + ". I am " + arg1 + ".");

//StringBuilder.append

StringBuilder builder = new StringBuilder();

builder.append("hello,");

builder.append(arg0);

builder.append(". I am ");

builder.append(arg1);

http:// builder.append(".");

System.out.println(builder.toString());

//String.format

String formatStr = String.format("hello,%s. I am %s.", arg0, arg1);

SystemhHMufFq.out.println(formatStr);

//MessageFormat.format

String formattedText = MessageFormat.format("hello,{0}. I am {1}.", arg0, arg1);

System.out.println(formattedText);

2.运行结果

hello,Bob. I am Alice.

hello,Bob. I am Alice.

hello,Bob. I am Alice.

hello,Bob. I am Alice.


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java RPC框架熔断降级机制原理解析
下一篇:Java StringBuilder类相关知识总结
相关文章

 发表评论

暂时没有评论,来抢沙发吧~