字符串常量池初识

102 阅读1分钟

字符串常量池

当我们直接使用字符串赋值方式创建字符串对象时,字符串对象会被放入堆中的字符串常量池中,且字符串内容相同的持有相同的地址

【注意:凡是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
    }
}