关于#java#的问题:java数组赋值机制

变量赋值是把右边的数字赋给左边的变量,为什么数组赋值可以把左边数组里的值赋给右边的数组?(如图2)

img

img

变量赋值都是右边赋值给左边,数组也是一样的。
int[] arr2 = arr1; 这句话意思是,将 arr1 的内存地址赋值给 arr2 。
这时 arr1 和 arr2 指向的是同一个内存地址,所以修改了 arr2 的值, arr1 的值也会跟着改变。
arr2[0] = 10; 将10赋值给 arr2[0] 因为 arr2[0] 和 arr1[0] 指向的是同一个地址,所以此时 arr1[0] 也是10 。
所以此时循环输出 arr1 数组的结果是 :
10
2
3

我怎么没看到你左边赋值右边
int []arr2=arr1 不还是arr赋值给arr2

这是左边=右边,是对象引用指向了同一个数组,没有拷贝。