您的位置:首页 > 其它

方法中参数传递的机制

2016-04-24 21:43 363 查看
源代码:

public class PrimitiveTransferTest{
public static void swap(int a,int b){
int tmp=a;
a=b;
b=tmp;
System.out.println("swap方法里,a的值是"+a+"b的值是"+b);
}
public static void main(String[] args){
int a=6;
int b=9;
swap(a,b);
System.out.println("交换结束后,变量a的值是"+a+"变量b的值是"+b);
}
}


运行结果:



源代码:
class DataWrap{
int a;
int b;
}
public class PrimitiveTransferTest{
public static void swap(DataWrap dw){
int tmp=dw.a;
dw.a=dw.b;
dw.b=tmp;
System.out.println("swap方法里,a的值是"+dw.a+"b的值是"+dw.b);
}
public static void main(String[] args){
DataWrap dw=new DataWrap();
dw.a=6;
dw.b=9;
swap(dw);
System.out.println("交换结束后,变量a的值是"+dw.a+"变量b的值是"+dw.b);
}
}
运行结果:



1.内存中存在着两种内存,一种是堆内存,还有一种是栈内存;

2.在第一个源代码中,方法中的操作是对方法中的的a,b进行操作(方法中的a,b其实并等同于main中的a,b,他们是分别存在方法栈区和main栈区不同的值)而方法的操作是对于方法栈区的操作,main栈区的数其实并没有被改变;

3.在第二个源代码中定义了一个数据类,在main()中定义了一引用变量dw,所以dw的实际操作是储存在堆内存中的DataWrap对象。此时,不管是main中的dw还是方法中的dw,他们此时都是DataWrap的引用变量;(这个就是C++中的指针操作可以通过函数来改变变量的值)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: