概述:
不管是基本类型还是对象作为参数传递到方法中,都是值传递.只是对象作为参数传递的时候本质是原对象引用的拷贝,什么意思呢?就是复制了一个新的指针,并且这个指针指向了原来对象的内存地址.所以传递的不是对象,是引用(新指针)的值.
举例
例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);
}
}