Single dimensional array: 0 1 2 3 4 5 --> This array has a length of 6. 0 1 2 3 4 5 6 7 8 9 3 2 --> This has a column length (or height or row count) of 3 and a row length (or width or column count) of 4. We call this a 3x4 array. In Java, we would say: int[][] M = new int[3][4]; In C++, there are a couple of ways: int M[3][4]; This is called a "static array." They are enticing because the syntax is so simple. But they are not that hot. static arrays are allocated at compile time, meaning the compiler has to know their size in advance. Java doesn't use them at all. Java uses what is called "dynamic arrays" meaning they are allocated at runtime when you need them, and the size of the arrays is not computed until runtime. Dynamic arrays are more flexible and are easier to work with--which is why they are the only kind Java uses. C++ uses both static and dynamic arrays, but static has the easier syntax. IMPORTANT: static and dynamic arrays are not compatible with each other! Check out the DoubleArray Code for how to declare and use dynamic two-dimensional arrays.