在调用函数(testInPlaceInteger(a))之后int a的值保持不变,但是在调用函数(squareArrayInPlace)之后int [] arr发生了变化。为什么int值不变? 以下是我的代码:
public class Test {
public static void main(String[] args) {
int a = 5;
int[] arr = new int[] {3, 4};
Test test = new Test();
test.testInPlaceInteger(a);
test.squareArrayInPlace(arr);
System.out.println(a);
for (int i : arr) {
System.out.println(i);
}
}
public void testInPlaceInteger(int num) {
num *= num;
}
public void squareArrayInPlace(int[] intArray) {
for (int i = 0; i < intArray.length; i++) {
intArray[i] *= intArray[i];
}
}
}
输出:
5
9
16
答案 0 :(得分:0)
因为int
是基本类型并且是按值传递的。但是,intArray[i]
是一个内存位置,因此您可以更改其中的值。