String初解

 String 类型是不可变的对象,因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后有一次看到一个代码段,如下:

这段代码返回的是ture,当时以为是false,返回的应该是"",后来查资料,通过反编译

编译器对字符串相加会进行优化,首先实例化一个StringBuilder,然后把相加的字符串按顺序append,最后调用toString返回一个String对象。不信你们看看上面的字节码是不是出现了StringBuilder,(JDK1.5以后)

然后看StringBuilder的源码append,代码如下:

如果是object类型就会通过String.valueOf,会把null转成"null"

如果是String类型的话,看到最后会有个非空判断,如果是null的话会返回一个"null".

原文地址:https://www.cnblogs.com/wxhbk/p/9515920.html