本帖最后由 姬仁贵 于 2012-7-11 15:50 编辑
public class Demo2
{
int a;
int b;
int[] c;
public void print_1() {
a = 1;
b = 2;
int[] c={3}; //将3这个元素存入到数组C里面,也就是说c里面就一个元素。
g(b, c); //调用g函数。
System.out.println(a + ", " + b + ", " + c[1]);
}
public void g(int b, int[] c) {
a = 5;
b = 8;
c[1]=4; //因为C数组里面就一个元素,因为数组下表是从0开始的,当数组里就一个元素时数组的下标为0;即C[0]=4;所以在这里c[1]=4会出现角标越界的错误。
}
public static void main(String args[]) {
Demo2 d = new Demo2();
d.print_1();
}
}
==========================================================
public class Demo2
{
int a;
int b;
int[] c;
public void print_1() {
a = 1;
b = 2;
int[] c={3};
g(b, c);
System.out.println(a + ", " + b + ", " + c[0]);
}
public void g(int b, int[] c) {
a = 5;
b = 8;
c[0]=4; //因为这里数组的角标是正确的,所以会输出正确。在这里c[0]=4将4代替为C[0]里面以前的元素。
}
public static void main(String args[]) {
Demo2 d = new Demo2();
d.print_1();
}
}
至于输出结果为什么是:5, 2, 4
因为g(b, c)这条语句里面的b是通过值传递给 public void g(int b, int[] c) 的,
public void g(int b, int[] c) {
a = 5;
b = 8; //这里对b的操作不会影响到print_1()里面的b。
c[0]=4;
} |