0
在調用函數(squareInrayInPlace)後,int a的值在調用函數(testInPlaceInteger(a))後保持不變,但對於int [] arr更改。爲什麼int值不變?
以下是我的代碼:適用於int [],但不適用於int中的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
原語只通過值 –
@PavneetSingh - 這也適用於非原語。 –
@StephenC是的,但只是爲了保持簡單,對象可以在整個函數調用中保持它的狀態和行爲,而原始不能:) –