当我获取数组时,如下所示:

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

10-07 12:57