1. 传值机制
-
Java中,方法中所有参数都是“值传递”,也就是“传递的只是值的副本”。也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件不会影响原件。
-
引用值类型参数的传值:传递的是值的副本,但是引用类型传的是“对象的地址”。因此副本和参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。
2. 代码解释:
public class User4 {
int id;
String name;
String pwd;
public User4(int id,String name) {
// TODO Auto-generated constructor stub
this.id=id;
this.name=name;
}
public void testParameterTransfer01(User4 u){
u.name="高小八";
}
public void testParameterTransfer02(User4 u){
u = new User4(200,"高三"); //不是将之前u1的数据修改了,而是自己新创建了一个内存块的区域
System.out.println(u); //堆中重新创建了一个方法区 @u=7852e922
System.out.println(u.name);
System.out.println(u.id);
}
public static void main(String[] args) {
User4 u1=new User4(100,"高小七");
System.out.println(u1); //方法区 @u1=4e25154f
u1.testParameterTransfer01(u1);
System.out.println(u1.name); //传值被修改成八,所以输出原样
System.out.println(u1.id); //传递了100
u1.testParameterTransfer02(u1);
System.out.println(u1.name);
System.out.println(u1.id);
}
}
输出结果;
User4@7852e922
高小八
100
User4@4e25154f
高三
200
高小八
100
执行过程:
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。