String s = "0";
String ss = "0";
String sss = new String("0");
String ssss = new String("0");
System.out.println(s=="0");
System.out.println(s==ss);
String ss = "0";
String sss = new String("0");
String ssss = new String("0");
System.out.println(s=="0");
System.out.println(s==ss);
System.out.println(ss==sss);
System.out.println(sss==ssss);
看着这4个打印结果是什么 :
true
true
false
false
由此看出,直接用双引号赋值的String对象使用了享元模式,所有通过此方式创建的String对象,值相同时,共用同一个实例。
用new String()方式创建的String对象,每次都开辟了新的内存空间。