请你解释什么是值传递和引用传递?
值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。
引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身 。 所以对引用对象进行操作会同时改变原对象。
基本数据类型
public static void method(int a
){
a
--;
System
.out
.println("method a: "+a
);
}
@Test
public void test() throws Exception
{
int a
= 10;
method(a
);
System
.out
.println("outer a: "+a
);
}
运行结果
method a
: 9
outer a
: 10
引用类型
public static void methodReference(Integer a
){
a
= 9999;
System
.out
.println("method a: "+a
);
}
@Test
public void testReference() throws Exception
{
Integer a
= 1000;
methodReference(a
);
System
.out
.println("outer a: "+a
);
}
运行结果
method a
: 9999
outer a
: 1000