字符串常量池
当我们直接使用字符串赋值方式创建字符串对象时,字符串对象会被放入堆中的字符串常量池中,且字符串内容相同的持有相同的地址
【注意:凡是new语句方式创建的字符串对象都会在堆中重新开辟空间分配内存地址,若new语句创建的字符串在字符串常量池中没有,还会在字符串常量池中创建一个对象】
代码示例:
public class Demo {
public static void main(String[] args) {
String s1 = "a";
String s2 = "a";
System.out.println(s1 == s2);//true
String s3 = new String("bc");
String s4 = new String("bc");
System.out.println(s3 == s4);//false
String s5 = "a" + "bc";
String s6 = "abc";
System.out.println(s5 == s6);//true
String s7 = s1 + s3;
String s8 = s2 + s4;
System.out.println(s7 == s8);//false
System.out.println(s7 == s5);//false
System.out.println(s7 == s6);//false
}
}