String s1 = "abc";//"abc"是一个对象,将对象赋予类变量s1
String s2 = new String("abc");//这里是两个对象,在内存中存在两个,包括对象abc 和 new 出来的对象
String s3 = "abc"; //因为String类型数据是不可变的,所以‘abc’被放在了常量池中,这里的‘abc’?和s1的‘abc’是
//同一个常量abc对象,因此二者的内存地址是一样的。
System.out.println(s1==s2);//false
System.out.println(s1==s3);//true 这是这号i
public class StringDemo {
public static void main(String[] args) {
String str = "Hello";
str = str + "World";
str += "!!!";
System.out.println(str);
}
}
这句话和常规的对象创建是一样的,就是在内存开辟空间,在堆内存创建String对象,将内存地址赋予栈内存中的引用变量。
原文:https://www.cnblogs.com/anliux/p/12860115.html