This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
In Java, a 2D array is really just an array of arrays. So when you get the length of the outer array, you are simply asking how many inner arrays there are - which is four. If you wanted to find the total amount of values that can be stored in the 2D array you could:
1) If you know each inner array is the same size: Look at the length of values, and multiply that by the length of values
2) If you allow that each inner array is independent and can have different sizes, ten you must loop through each index of the outer array, and sum the lengths of the inner arrays
I agree with all the posts above. However if you still unable to visualize why you get length as 4 rather than 12, then follow this example.
Think your array as 4 empty boxes and place them in one line. How add three boxes in each box. This is what the code  means.
So now the length of your boxes is 4 and not 12.