java只有值传递

旧城等待, 2022-08-21 00:17 255阅读 0赞
  1. 有次去面试,面试官问我java的值传递和引用传递是什么,问我有没
  2. 有用因为用错这2者而导致错误。
  3. 我回答值传递就是传递的数值,引用传递传递的指针,感觉自己回答的
  4. 不好后来查了下资料总结下

例子

  1. public static void main(String[] args) {
  2. HashMap<String, Object> map = new HashMap<String, Object>();
  3. addKey(map);
  4. System.out.println(map);
  5. createMap(map);
  6. System.out.println(map);
  7. }
  8. private static void addKey(Map<String, Object> map) {
  9. map.put("a", 111);
  10. }
  11. private static void createMap(Map<String, Object> map) {
  12. map = new HashMap<String, Object>();
  13. }
  14. 结果
  15. {a=111}
  16. {a=111}

很多人认为将对象指针传递过去,这是引用传递,实际map的指针没有传过去,传过去的只是指针的copy,你可以用它来操作对象的数据,确不能改变原有指针的指向。如下图

描述图
指针存放在栈中,当你在堆中有新实例时,map2在方法里的拷贝就会改变指向到新的实例,但原有的对象和原有的指针map并不会发生改变

发表评论

表情:
评论列表 (有 0 条评论,255人围观)

还没有评论,来说两句吧...

相关阅读

    相关 面试官:Java为什么传递

    面试官爱问的一个基础问题:Java是值传递还是引用传递? 想必大家都对这个问题都有自己的看法,那到底事实是怎样的,我们又该如何回答面试官这个问题呢?今天咱们就来好好分析一波

    相关 Java传递

    值传递:指在调用方法时将实际参数复制一份传递给方法中,这样在方法中如果对参数进行修改,将不会影响到实际参数。 引用传递:指在调用方法时将实际参数的地址直接传递到方法中,那么

    相关 为什么说Java传递

    对于初学者来说,要想把这个问题回答正确,是比较难的。在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文章可以把

    相关 java传递

    有次去面试,面试官问我java的值传递和引用传递是什么,问我有没 有用因为用错这2者而导致错误。 我回答值传递就是传递的数值,引用传递传递的指针,感觉自