Java中的数组赋值和引用

Anu*_*pta 3 java arrays reference

public class Test {
    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 5};
        int[] b = a;
        int[] c = {6, 7, 8};
        a = c;
        for(int i = 0; i < a.length; i ++)
            System.out.print(a[i] + " ");
        System.out.print("\n");
        for(int i = 0; i < b.length; i ++) 
            System.out.print(b[i] + " ");
        System.out.print("\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

我已初始化数组a并将a的引用分配给新数组b.现在我初始化了一个新的数组c并将其引用传递给了数组a.由于数组b是对数组a的引用,因此b应该具有c中的新值,但b具有旧的a值.它背后的原因是什么?输出如下 -

输出 -

6 7 8 
1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

cod*_*dev 5

不要被名单'list'激怒.这些图像来自python可视化,但原理在Java中是相同的

为数组a分配了一个新数组:

分配一个

数组b被分配给后面的实例a:

分配b

为数组c分配了一个新数组:

分配c

最后a被分配给后面的实例c,b没有重新分配,仍然保留对旧的引用a:

重新分配一个

从pythontutor.com上的可视化中获取的图像