Hi,
The question is about the declaration of 2-dim array cA such that cA[2][3] should be a valid element. That means the array size should be atleast [3][4].
1.
char[][] cA = { { 'a', 'b', 'c' }, { 'a', 'b', 'c' } };
//This will compile and creates array of size [2][3]. As cA[2][3] will give ArrayIndexOutOfBounds Exception, this is not the answer.
2.
char cA[][] = new char[3][];
for (int i=0; i<cA.length; i++) cA[i] = new char[4];
//This will compile and creates array of size [3][4]. As cA[2][3] is accessible, this is one of the answers.
3.
char cA[][] = { new char[ ]{ 'a', 'b', 'c' } , new char[ ]{ 'a', 'b', 'c' } };
//This will compile and creates array of size [2][3]. As cA[2][3] will give ArrayIndexOutOfBounds Exception, this is not the answer.
4
char cA[3][2] = new char[][] { { 'a', 'b', 'c' }, { 'a', 'b', 'c' } };
//This wont compile because the size is mentioned in the declaration. When the array is declared and initialized in the same line, size should not be mentioned!
5.
char[][] cA = { "1234", "1234", "1234" };
// This also wont compile because the "1234" is a
string and cannot be converted to char[].
So the answer is 2.