这个Java代码如何工作?

chu*_*hun 3 java

public static void main(String[] args)
{
    int [][]shatner = new int[1][1];
    int []rat = new int[4];
    shatner[0] = rat;
    System.out.println(shatner[0][3]);
}    
Run Code Online (Sandbox Code Playgroud)

惊讶,输出为0,为什么Java不检查这种indexOutOfBound错误?

nc3*_*c3b 6

不要惊讶.shatner [0]是一个数组(大鼠),恰好是长度为4.所以shartner [0] [3]是rat [3],恰好是0 ..


Mic*_*rdt 5

你在哪里看到"indexOutOfBound错误"?代码执行以下操作:

  • 初始化数组(大小为1)的int数组(大小为1),即2D数组,内容用0初始化
  • int初始化大小为4 的数组,内容初始化为0
  • 将2D数组的单个元素设置为4个1D数组
  • 访问2D数组中第一个数组的最后一个元素,即0