头疼的java面试题之传值,传址
据本人之拙见,java传值都是传数据的副本,修改其值不会影响原来的值,传地址会影响原来的值,头疼之代码如下:
public class Test {
public void change(int a) {
a = a + 1;
}
public void change2(int[] a, int[] b) {
a = b;
}
public void iter(int[] a) {
for(int i : a) {
System.out.print(i + " ");
}
}
public static void main(String[] aaaaaa) {
int num = 1;
int a[] = {1,1,1};
int b[] = {2,2,2};
Test t = new Test();
t.change(num);
t.change2(a,b);
System.out.print(num); /// num = 1
t.iter(a); // 为什么还是 “1 1 1”??? 难道数组不是引用类型的吗?不是传地址的?????
}
}
最后弱弱的问下各位高手,定义一个final类型的数组,为什么在程序中,其中的每个元素的值都能被改变?常量也能被改变吗?