在一个面试问题中,面试官问我
以下说法的共同点和区别是什么:
String s = "Test";
String s = new String("Test");
内存分配有区别吗?
最佳答案
String s = "Test";
将首先在字符串常量池中查找字符串“Test”。如果 found s 将引用找到的对象。如果没有找到,则创建一个新的 String 对象,将其添加到池中,并使 s 引用新创建的对象。
String s = new String("Test");
将首先创建一个新的字符串对象并让 s 引用它。此外,在字符串常量池中创建了字符串“Test”的条目,如果它还没有。
所以假设字符串“Test”不在池中,第一个声明将创建一个对象,而第二个声明将创建两个对象。
关于java - 赋值和创建字符串实例有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2175064/