Pg 104 : 4.3.1 - multidimensional-arrays

Date: 2018-12-02
Status: Fixed
Fixedinbuild:
Build 10, 2018-12-03
Old Text:
You cannot, however, leave out the size of a higher dimension if you want to specify the size of a lower dimension. For example, you cannot do new int[][2]; This is not possible because the number of int[][] references depends on how many int[] objects do you have. If you have three int[] objects, that means you will have 3x2 = 6 int[][] references. The JVM cannot figure this out without knowing the length of all the higher dimensions.
New Text:
You cannot, however, leave out the size of a higher dimension if you want to specify the size of a lower dimension. For example, you cannot do new int[][2]; The reason is simple - new int[][2] tries to create an array of int[2] objects. But it it does not tell the JVM how many int[2] objects you want to store. Without this information, the JVM has no idea how much space it needs to allocate for this array. On the other hand, new int[2][] is fine because now, you are telling the JVM that you want to create an array of length 2. In this case, the JVM is clear that it needs to allocate space to store 2 references. Remember that the size of a reference doesn't depend on the length of the array to which it points. So, the JVM doesn't care about the length of the arrays to which these two references will refer. It simply allocates space to store 2 references.
Comments:
Reportedby:
-

 Back