两者区别
值传递:值传递传递是真实内容的一个副本,对副本的操作不影响原内容,也就是形参怎么变化,都不影响实参的内容。
引用传递:引用也就是指真实内容的地址值,在方法调用时,实参的地址通过方法调用被传递给相应的形参,在方法体内,形参和实参指向同一个内存地址,对形参的操作会影响真实内容。
public static void main(String[] args) {
int a = 5;
person person = new person();
person.setAge(20);
test(a,person);
System.out.println(a);
System.out.println(person.getAge());
}
static void test(int a,person person){
a++;
int age = person.getAge();
age++;
System.out.println("a:" + a);
System.out.println("age:" + age);
}
程序的输出为main方法的值没变,test方法的值自增了。
Java里面只有值传递?
根据上面我们基本对值传递和引用传递有所了解。 如果传递的参数类型是普通基本类型,那么一定是复制一份实参值传递给形参的,但是当参数类型是对象的时候,也是复制的一份参数值传递给形参,只不过复制的是对象引用的地址,也就是在内存中分配的存储地址,不是直接传递的引用地址。
每个人看问题观点与理解存在差异,结果还待考证。