Question: ```
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]);
}    

```

surprised, The output is 0, why Java doesn't check this kind of indexOutOfBound error?

Answer: 
Don't be surprised. shatner[0] is an array (rat) and happens to be of length 4. So shartner[0][3] is rat[3] which happens to be 0..
It's not that Java doesn't check the IndexOutOfBoundsException. It's that the answer SHOULD be zero. The key line is 

```
shatner[0] = rat;

```

Since that means that the 0th index of `shatner` is pointing to an array of length 4, `shatner[0][4]` is totally valid.