String s1 = “abc”;
String s2 = new String(“abc”);
解析:对于s1,它只创建了一个对象,是在常量池中,并且把常量池中对象的地址赋值给变量名s1。
对于s2,它创建了两个对象,一个是在堆中,另一个是在常量池中,堆中的对象保存的是字符串在常量池中对象的地址,然后堆中对象的地址赋值给变量名s2。
String s1 = “abc”;
String s2 = new String(“abc”);
解析:对于s1,它只创建了一个对象,是在常量池中,并且把常量池中对象的地址赋值给变量名s1。
对于s2,它创建了两个对象,一个是在堆中,另一个是在常量池中,堆中的对象保存的是字符串在常量池中对象的地址,然后堆中对象的地址赋值给变量名s2。