全职杀手王
(全职杀手王)
注册会员

一般会员
UID 64617
精华
0
积分 63
帖子 59
金钱 63 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-6-8
状态 离线
|
[广告]: Enom域名自助付费 自助注册 自助PUSH 主流域名COM等一律57.99元年
关于函数的调用的问题!
最近在研究java中函数的调用的时候遇到点问题,请看下面的程序:
class StringTest
{
public static void Change(int x,int y)
{
x=x+y;
y=x-y;
x=x-y;
}
public static void Change(int[] num)
{
num[0]=num[0]+num[1];
num[1]=num[0]-num[1];
num[0]=num[0]-num[1];
}
public static void Change(Point pt)
{
pt.x=pt.x+pt.y;
pt.y=pt.x-pt.y;
pt.x=pt.x-pt.y;
}
public static void main(String[] args)
{
int x=646;
int y=989;
Change(x,y);
System.out.println("x="+x+","+"y="+y);
int[] num=new int[]{646,989};
Change(num);
System.out.println("x="+num[0]+","+"y="+num[1]);
Point pt=new Point();
pt.x=646;
pt.y=8897;
Change(pt);
System.out.println("x="+pt.x+","+"y="+pt.y);
System.out.println(pt.toString());
}
}
class Point
{
int x,y;
}
其中第二个和第三个change程序都实现了x和y值得的对调,惟独第一个change方法经过main函数的调用后x和y的值没有对调。这是为什么?教材上解释说:
在Java中,传参时,都是以传值的方式进行。
对于基本数据类型,传递的是数据的拷贝;对于引用类型,传递的引用的拷贝。
对于这段话不是很明白,因为我一直对java的内存使用管理方式不是很熟悉,所以理解时有些问题。希望高手解释一下!
|
|