JSP学习笔记(五十一):参数传递的一个问题

今天在群上,有一朋友问了一个问题,我觉的挺经典的,纪录如下:

public class Qcb90 { 
int a;
int b;
public void f() {
a
= 0;
b
= 0;
int[] c = { 0 };
g(b, c);
System.out.println(a
+ " " + b + " " + c[0] + " "); //为什么输出的是1 0 1 啊????
}
public void g(int b, int[] c) {
a
= 1;
b
= 1;
c[
0] = 1;
}
public static void main(String args[]) {
Qcb90 obj
= new Qcb90();
obj.f();
}
}

 

输出结果是1 0 1

其实这个结果不难理解,我们一个一个的看:

a:这是一个全局变量,g方法里更改了a的值,a最终值为1

b:b也是一个全局变量,只是调用g方法的时候,默认更改的是g方法内部的b,如果要修改全局的b,需要把代码b=1修改为this.b=1

c:c是一个对象,传递的是引用,这不同于a、b,传递的值。

posted @ 2008-09-22 18:20  魔豆  阅读(276)  评论(0编辑  收藏  举报