据本人之拙见,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类型的数组,为什么在程序中,其中的每个元素的值都能被改变?常量也能被改变吗?
http://topic.csdn.net/u/20080610/11/54f77de8-3fbf-44ae-87d6-a5a9de2715dd.html
定义一个final类型的数组, 为什么在程序中,其中的每个元素的值都能被改变
例如final int[] array = new int[10]; // array只是一个4字节的内存地址值, 并没有占用10个int的内存空间.
注意, 把array传给一个函数的时候, 传递的是array存储的内存地址值的副本, 并不是他所指向的10个int的那一段内存的副本.
private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String USERNAME = "sys";
private static final String PASSWORD = "s ......