三、运行时的动态常量(学习笔记)

时间:2022-07-26
本文章向大家介绍三、运行时的动态常量(学习笔记),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
public class Test {

    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
        String s3 = new String("abc");
        String s4 = new String("abc");
        System.out.println(s1==s2);
        System.out.println(s1==s3);
        System.out.println(s1==s3.intern());
        System.out.println(s3==s4);
    }



}

代码执行的结果:

  true   false   true   false

出现上面的

结果的解释如下图

     任何一个字符串的创建都会扔到常量池中,常量池是方法区的一块存储空间

     通过new 创建的对象会放到堆上

     == 比较的对对象的内存地址

     String 在常量池中存储的数据结构类似一个HashSet ,里面存储的是无序 不重复的字符串,所以两个“abc” 放入到里面存储的是一个

     s3 和 s4 是通过new创建的对象,所以放入到堆中,所以两个对象的内存地址不一样。

     而 通过 s3.intern() 这个方法,可以将s3从堆内存中放入到常量池中,所以进行比较的时候两个对象的地址是一样的。