本帖最后由 Liveei 于 2015-8-25 23:33 编辑
名词解释:
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。(这相当于原有内存空间不会受影响)
引用传递:也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,所以方法执行中形式参数的改变将会影响实际参数。(这相当于原有内存空间中的值被改变了)
引用传递示例:
package horace.com;
class A{
int temp = 10;
}
public class Demo01 {
public static void main(String[] args) {
A a = new A();
a.temp = 20;
System.out.println(a.temp);
tell(a);
System.out.println(a.temp);
}
public static void tell(A a2){
a2.temp = 30;
}
}
显示的结果为
1
2
20
30
值传递示例:
package horace.com;
class B{
public void tell(int temp){
temp = 30;
System.out.println("tell()方法中,temp的值"+temp);
}
}
public class Demo02 {
public static void main(String[] args) {
int temp =20;
B b =new B();
b.tell(temp);
System.out.println("原有temp的值,或者说main方法中temp的值:"+temp);
}
}
显示的结果为:
1
2
tell()方法中,temp的值30
原有temp的值,或者说main方法中temp的值:20
从上面可以看出来,引用传递,是将内存空间的地址传递给其他对象,这样无论谁更改都会改变该内存空间的存放的数据;值传递是将内存空间存放的数值传递给其他对象,对原来内存空间存放的数据不会造成影响。
|
|