概述:
不管是基本类型还是对象作为参数传递到方法中,都是值传递.只是对象作为参数传递的时候本质是原对象引用的拷贝,什么意思呢?就是复制了一个新的指针,并且这个指针指向了原来对象的内存地址.所以传递的不是对象,是引用(新指针)的值.
举例
例1:传进去的user是一个新的引用值,指向同一块物理地址,改变user的值,就是再改变原user的内存中的值,所以结果输出b
public static void main(String[] args) {
User user = new User();
user.setName("a");
System.out.println("打印物理地址:" + user);
itnValue.setValue(user);
System.out.println(user.getName());
}
static class itnValue{
public static void setValue(User user) {
user.setName("b");
System.out.println("打印物理地址:" + user);
}
}
例2:如果在方法中从新实例化一个Use对象,传递到方法中的新指针就会指向新的一块内存地址,但是原User对象的引用还是指向原来的内存地址,所以不会变化,结果输出a
static class itnValue{
public static void setValue(User user) {
user = new User();
user.setName("b");
System.out.println("打印物理地址:" + user);
}
}
本文深入探讨了Java中参数传递的机制,无论是基本类型还是对象,都采用值传递方式。对象参数实为引用的拷贝,指向原对象的内存地址。文章通过两个实例,展示了方法内修改对象状态对原对象的影响,以及重新实例化对象时原对象不受影响的现象。
1069

被折叠的 条评论
为什么被折叠?



