当我获取数组时,如下所示:
int anArray[] = new int[5];
//initialize to 0
doStuff(anArray);
//inside doStuff
anArray[3] = 731;
//passes back to main
System.out.println(anArray[3]); // outputs 731
这不是通过引用吗?是什么赋予了?
最佳答案
像数组这样的引用类型仍被视为按值传递,因为您正在传递引用值的副本。请注意,您没有传递实际的参考手柄。也就是说,您的doStuff方法无法更改对anArray的引用,这可能会通过引用语义传递。一个例子应该有助于理解区别:
int anArray[] = new int[] { 99, 100};
doStuff(anArray);
...
//inside doStuff
anArray = new int[] { 68, 69};
...
// back in anArray's original scope
System.out.println(anArray[1]); // still outputs 100, not 69