java String拼接时候的一个小问题

Posted 别再闹了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java String拼接时候的一个小问题相关的知识,希望对你有一定的参考价值。

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

String test=null+"abc";
System.out.println(test);

输出就是nullabc

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

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

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

以上是关于java String拼接时候的一个小问题的主要内容,如果未能解决你的问题,请参考以下文章

java字符串拼接问题,求大神讲清楚

Java代码优化的30个小技巧

Java 中拼接 String 的 N 种方式

Java 中拼接 String 的 N 种方式

StringBuffer的拼接效率小细节

Java字符拼接成字符串的注意点