为什么下面的代码编译没有错误?

Jef*_*ter 6 java arrays

我是java新手并试图理解以下内容.数组的长度不一样.代码仍然执行没有任何错误.我不明白为什么.如果有人可以澄清.

public class Practice {
    public static void main(String[] args){

        int [][] a = {{1,2,3},{4,5}};
        a[0] = a[1];
    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 9

a[0]并且a[1]都是int数组(即它们的类型是int[]),因此可以将一个分配给另一个,而不管它们所指的当前数组的长度.

您的代码与以下代码没有太大区别:

int [] a = {1,2,3};
int [] b = {4,5}
a = b;
Run Code Online (Sandbox Code Playgroud)

或者从这段代码:

Object a = ...
Object b = ...
a = b;
Run Code Online (Sandbox Code Playgroud)

在这两种情况下(如在原始代码中),您正在更改引用类型变量的值以引用其他对象.