public void changeColor(int[] value)
{
color = value;
}
在上面的代碼中,Color是一個int類型的數組。而值是方法ChangeColor範圍內的數組。按顏色=值;我將分配給值的內存空間分配給Color。根據我的理解,一旦某個方法結束,特定於該方法的變量將被刪除,在這種情況下,Color將能夠在該方法結束後訪問其值「內存分配更改
public void changeColor(int[] value)
{
color = value;
}
在上面的代碼中,Color是一個int類型的數組。而值是方法ChangeColor範圍內的數組。按顏色=值;我將分配給值的內存空間分配給Color。根據我的理解,一旦某個方法結束,特定於該方法的變量將被刪除,在這種情況下,Color將能夠在該方法結束後訪問其值「內存分配更改
」顏色能夠在方法結束後訪問它的值?「
簡短的回答:是的,否則你爲什麼要定義一個變量爲全局(無論它是一個參考或原始)
請運行該代碼,看看會發生什麼:
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;
}
}
的int[] value
參數該方法是對數組的引用,但不是整個數組的副本。顏色也是一個參考,所以當你分配它們時,你將它們指向同一個數組。
當方法存在時,值從內存中刪除,但這只是一個引用,而不是數組。所以即使方法結束,仍然可以訪問仍然指向數組的顏色。
在慣用的Java類中被命名爲'UpperCamelCase',變量是'lowerCamelCase'。你的例子可能會讓你感到困惑,因爲你使用的是非標準的命名。另外'Color'是JDK中的'Class',它更加混淆了這個問題! –