对Java中的对象引用有点困惑。据我所知,当我说:
Obj objA = new Obj();
Obj objB = objA;
我正在为objA分配objB 引用。所以,如果我改变其中一个,我会改变另一个。这实际上就是它如何与Arrays一起使用。假设我将Boolean[] a = {false, false}
传递给以下方法:
Boolean[] test(Boolean[] a){
Boolean[] b = a; //Array object = Array object
b[0] = true;
System.out.println("In method:");
for(int i=0;i<a.length;i++){
System.out.printf("%d ", a[i]?1:0);
}
System.out.println();
return a;
}
返回时,a[0]
现在是真的。但是说我把同样的事情传递给:
Boolean[] test2(Boolean[] a){
Boolean[] b = new Boolean[2];
b[0] = a[0]; //Boolean obj = Boolean obj
b[0] = true;
System.out.println("In method:");
for(int i=0;i<a.length;i++){
System.out.printf("%d ", a[i]?1:0);
}
System.out.println();
return a;
}
如果我现在退回,a[0]
仍然是假的。 (如果我说b = new Boolean(true);
,它的工作方式相同)但有什么区别?在这两种情况下我都说Object = Object。为什么引用在第一个工作但不在第二个工作?此外,有没有办法获得相同的功能,其中一个单元格引用另一个单元格引用另一个单元格的方式?