2014-04-20 38 views
-1
public void changeColor(int[] value) 
{ 
    color = value; 
} 

在上面的代碼中,Color是一個int類型的數組。而值是方法ChangeColor範圍內的數組。按顏色=值;我將分配給值的內存空間分配給Color。根據我的理解,一旦某個方法結束,特定於該方法的變量將被刪除,在這種情況下,Color將能夠在該方法結束後訪問其值「內存分配更改

+2

在慣用的Java類中被命名爲'UpperCamelCase',變量是'lowerCamelCase'。你的例子可能會讓你感到困惑,因爲你使用的是非標準的命名。另外'Color'是JDK中的'Class',它更加混淆了這個問題! –

回答

1

」顏色能夠在方法結束後訪問它的值?「
簡短的回答:是的,否則你爲什麼要定義一個變量爲全局(無論它是一個參考或原始)

請運行該代碼,看看會發生什麼:

public class Test { 
    int[] Color = new int[2]; 
    int i = 20; 
    public static void main(String[] args) { 
     Test t = new Test(); 
     t.ChangeColor(new int[] {1,2,3}); 
     System.out.println(Arrays.toString(t.Color)); 
     System.out.print(t.i); 

    } 
    public void ChangeColor(int[] value) 
    { 
     Color = value; 
     i = 10; 
    } 
} 
0

int[] value參數該方法是對數組的引用,但不是整個數組的副本。顏色也是一個參考,所以當你分配它們時,你將它們指向同一個數組。

當方法存在時,值從內存中刪除,但這只是一個引用,而不是數組。所以即使方法結束,仍然可以訪問仍然指向數組的顏色。