码迷,mamicode.com
首页 > 编程语言 > 详细

java的值传递

时间:2019-04-30 22:00:23      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:一个   传递   引用传递   new   oid   内存地址   数据   值传递   初始化   

java中都是值传递

如果参数是引用类型的,实际上是把引用地址复制了一份传递
例如 User user = new User();
user存放在栈中,里面存放着内存地址,new User()会在堆中初始化一块内存区域,存放user的实际内容
例1:
public void pass(User user) {
user.setName("zz");
}
这是直接对堆内数据进行修改,而不是对对象地址进行改变,会让人误以为是引用传递
例2:
public void pass(User user) {
user = new User();
user.setName("zz");
}
这是在堆内存中又初始化User对象,然后把内存地址赋值给user,此时该user与之前的user就不是同一个了,
如果是引用传递的话,此处对user进行修改,会导致实参也进行改变。

java的值传递

标签:一个   传递   引用传递   new   oid   内存地址   数据   值传递   初始化   

原文地址:https://www.cnblogs.com/youmingDDD/p/10797550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!