String 与new String有什么区别

String 与new String有什么区别 Java中字符串可以通过两种方式创建使用字符串字面量直接赋值给变量或使用关键字new创建一个新的String对象。它们之间有以下区别首先使用字符串字面量赋值给变量时Java会使用字符串常量池来管理字符串对象可以提高性能和节省内存。而使用new String创建的字符串对象则在堆内存中独立分配内存空间每次调用都会创建一个新的对象因此内存消耗更大。其次使用字符串字面量赋值给变量的字符串是不可变的即不能改变其内容。而使用new String创建的字符串对象是可变的可以通过调用方法或者使用赋值运算符修改其内容。最后使用字符串字面量赋值给变量的字符串比较时如果多个变量引用相同的字符串字面量则它们实际上引用的是同一个对象因此比较它们的引用时将返回true。而使用new String创建的字符串对象即使内容相同它们也是不同的对象因此比较它们的引用时将返回false。