美文网首页
list中存进去的对象是否等于取出来的新命名的对象(地址值)

list中存进去的对象是否等于取出来的新命名的对象(地址值)

作者: 粽十三丶 | 来源:发表于2020-05-21 14:25 被阅读0次

    先搬出代码

    public static void main(String[]args){

        String str1 = "123";

        List<String> list = new ArrayList<>();

        list.add(str1);

        String str2 = list.get(0);

        System.out.println(str1==str2);

    }

    打印str1和str2的比较,结果是相等,控制台输出true

    琢磨了一番,大概是如下面几个步骤

    首先String str1 = "123";

    这一步,会把"123"这个值,被写入jvm内存中的常量池中,同时给一个地址值让str1指向它

    然后list.add(str1);

    这步操作,在list数组中,存入的也仍然是"123"的地址值,如果add方法后,修改了str1的值,实际list中的对象并不会受到影响

    最后String str2 = list.get(0);

    从list中取出来的值,实际结果还是字符串"123"的地址值引用,所以最后str1==str2的值,判断地址值的比较,依然是相等.

    相关文章

      网友评论

          本文标题:list中存进去的对象是否等于取出来的新命名的对象(地址值)

          本文链接:https://www.haomeiwen.com/subject/muxzohtx.html