In Java, a multi-dimensional array is really a single-dimension array that contains other arrays.
int books = new int;
...declares "books" as a two-dimensional array, which means it is an array that holds other arrays. In this case, the other arrays it holds are int arrays. So books[x] references an int array, but books[x][y] holds an int.
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer sscce.org