Java中的String对象是不可变的。String类中每个看起来会修改String值的方法,实际上都是创建了一个全新的String对象。
Java中一般不能重载操作符,但是String类“+”和 “+=”操作符是Java中唯一重载的两个操作符。这两个操作符都是编译器默认引入了java.lang.StringBuilder类,最后都调用了toString方法生成String对象的。
常量字符串是分配在虚拟机的方法区的常量池中,也可以通过String.Intern将String添加到常量池中,String.valueOf方法会先检索常量池中字符串,没有的话才会去在堆中new一个,使用new 操作符生成的字符串对象,跟一般的对象生成一样,是在虚拟机的堆中分配内存的。