当我拿一个数组时,是这样的:
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
关于java - 有人能解释一下 java 是如何仅在以下情况下按值传递的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7225553/