map中存放的value是引用变量

前段时间在工作中突然发现一个很有趣的问题,下面先贴一段测试代码

Map<Integer, TT> mtt = new HashMap<>();
Map<Integer,Integer> mi = new HashMap<>();
TT t = new TT();
t.setName("吴彦祖");
int s = 1;
mtt.put(1,t);
mi.put(2, s);
System.out.println("mtt="+mtt.get(1).getName());
System.out.println("mi="+mi.get(2));
System.out.println(mtt.get(1)==t);
System.out.println(mi.get(2)==s);
t.setName("刘德华");
s=2;
System.out.println("mtt="+mtt.get(1).getName());
System.out.println("mi="+mi.get(2));
System.out.println(mtt.get(1)==t);
System.out.println(mi.get(2)==s);

TT是一个普通的实体类

打印的结果是

mtt=吴彦祖
mi=1
true
true
mtt=刘德华
mi=1
true
false

结论:到这里大家会发现map的value是引用变量,当他引用的value对象发生变化时,他的value就会发生变化。但是为什么mi这个map,s发生变化时,为什么他的value没有变呢,后面可以看到,s=2之后,这个s已经不是之前的s了,而map的引用依然是之前的s=1

如果以上有什么问题,欢迎各位指出,谢谢!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值