如何理解下段代码的输出结果

FuryBiCiSh 2017-12-11 09:47:14
public class Demo01 {

public static void main(String[] args) {
Map<String,Object> map=new HashMap<String,Object>();
test(map);
System.out.println(map);
test2(map);
System.out.println(map);
}
public static void test(Map<String,Object> map){
map.put("msg", "Hello World");
}
public static void test2(Map<String,Object> map){
map=new HashMap<String,Object>();
map.put("data", "OK");
}
}
...全文
94 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
张三顺 2017-12-11
你要表示什么?
  • 打赏
  • 举报
回复
yasashii 2017-12-11
因为你在打印的时候没有指定key,所以默认两次打印出来的都是第一个保存进去的数据。
  • 打赏
  • 举报
回复
FuryBiCiSh 2017-12-11
内部关于局部对象值的传入过程有些模糊
  • 打赏
  • 举报
回复
test(map)修改的是你void main下面那行创建的map,所以此时的map被put了("msg", "Hello World");test2(map)修改的是在test2里面一个新的map,它没有对上一个map对象进行操作,所以最终你打印的是第一个map对象,而且结果将会全部都是msg: Hello World
  • 打赏
  • 举报
回复
bcsflilong 2017-12-11
有什么问题吗
  • 打赏
  • 举报
回复
相关推荐
发帖
Java
加入

4.8w+

社区成员

Java相关技术讨论
申请成为版主
帖子事件
创建了帖子
2017-12-11 09:47
社区公告
暂无公告