2016-12-29 78 views
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 
+0

原語只通過值 –

+0

@PavneetSingh - 這也適用於非原語。 –

+0

@StephenC是的,但只是爲了保持簡單,對象可以在整個函數調用中保持它的狀態和行爲,而原始不能:) –

回答

0

因爲int是基本類型和按值傳遞。但是,intArray[i]是一個內存位置,因此您可以更改其中的值。

相關問題