public void changeColor(int[] value)
{
color = value;
}
在上面的代码中,Color是一个类中的int数组。和value是方法ChangeColor范围内的数组。按颜色=值;我将分配给值的内存空间分配给Color。根据我的理解,一旦方法结束,将删除特定于该方法的变量,在这种情况下,Color将能够在方法结束后访问其值吗?
答案 0 :(得分:1)
“方法结束后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;
}
}
答案 1 :(得分:0)
方法的int[] value
参数是对数组的引用,但不是完整数组的副本。颜色也是一个参考,因此当您指定它们时,可以使它们指向同一个数组。
当方法存在时,从内存中删除值,但这只是一个引用,而不是数组。因此,即使方法已完成,仍然可以访问仍然指向数组的颜色。