Java中究竟是传值还是传引用
作者: wwty, 出处:IT专家网论坛, 责任编辑: 包春林,
2008-05-16 04:00
在Java中,事实上底层工作原理不存在传引用的概念,这也象《Practical Java》中所说的那样,Java中只有传值。这句话理解起来需要费一定的周折。
看起来没什么变化,但是这次mothed1中执行了change (x)后,x的值不再是"Hello"了,而是变成了"Hello world!"。这是因为x传递给change(i)的是x的引用。这是最经典的传引用。
似乎有些奇怪了,两段程序没有特别的不同,可是为什么一个传的是值而另一个传的是引用呢?......
2非要搞清楚传值还是传引用的问题吗?
搞清楚这自然是有必要的,不然我也不需要写这么多了,不过的确没有到"非要"的地步。
首先,如果我们不太关心什么是传值什么是传引用,我们一样能写出漂亮的代码,但是这些代码在运行过程中可能会存在着极大的隐患。
全局变量是让大家深恶痛绝(又难以割舍)的东西,原因就是使用全局变量要特别注意数据的保护。如果在多线程的程序里使用全局变量简直就等于跟自己过不去。不了解传值和传引用的问题,跟使用全局变量不考虑数据保护的罪过是不相上下下的,甚至有时候比它还要糟。你会莫名其妙,为什么我的返回参数没有起作用,为什么我传进去的参数变成了这样......?
一个例子:
//例3
| void mothed1(){
int x=0; int y=1; switchValue(x,y); System.out.println("x="+x); System.out.println("y="+y); } void switchValue(int a,int b){ int c=a; a=b; b=c; } |
- 本文关键词:

