java引用和对象

java引用和对象

1 引用和对象不明引发的bug?

public class Utils {

    public static void main(String[] args) {
        List<String> strList = new ArrayList<>();
        Utils.test(strList);
        System.out.println(strList.size());
    }

    private static void test(List<String> strList) {
        HashMap map = new HashMap();
        map.put("1", "a");
        strList = Arrays.asList("ab", "c");
        System.out.println(strList.size());
    }
}

打印的结果是否相同?

结果是不同的
1
0

有很多人会用此代码,去修改入参strList的值,造成获取不到值的问题!!!

2 原因

​ 入参如果为引用类型,假如命名为strList, 则此入参是传入引用参数的一个拷贝,假如命名为 strList_bak; 他们同时指向同一个对象。 当使用 = 把拷贝引用strList_bak指向了一个新的内存对象。

具体参考如下图:

在这里插入图片描述

发布了8 篇原创文章 · 获赞 1 · 访问量 352
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览