her*_*ian 0 java arrays methods
我给了这两种方法,当我运行问题8它打印出"1 3",但我不明白为什么.doSomething方法不应该影响question8方法中的"arr"数组,因此打印出"2 4"
private static void question8() {
int[] arr = {1,2,3,4};
doSomething(arr);
System.out.print(arr[1] + " ");
System.out.print(arr[3]);
}
private static void doSomething(int[] list) {
int[] b = list;
for (int i = 0; i < b.length; i++) {
b[i] = i;
}
}
Run Code Online (Sandbox Code Playgroud)
数组是a Object,引用变量按值传递.访问相同的对象.在你的代码中,
private static void doSomething(int[] list) {
int[] b = list; // this means list and b are referring to the same array that was being referenced by list reference variable
for (int i = 0; i < b.length; i++) {
b[i] = i;
}
}
Run Code Online (Sandbox Code Playgroud)
这是怎么回事
question8()方法中创建数组.doSomething()方法question8()doSomething()方法,该方法由方法中的arr变量引用question8().int[] b = list意思是变量b指的是由变量引用的数组对象list.数组对象也是一样的.要正确理解这一点,您可以阅读有关原语和引用变量的java中的值传递.参考变量部分对您有用.
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |