out put for the above program is
cause the first one is trying to print the referrence variable that is the reason we are getting the 2d array class name @ symbol and hexa code. Now for the second output since we did not give values to it so by default its taking 0 since the array data type is int. Now if there is a slight change in code
the output being
x is point to the referrence variable of the array and x is the referrence variable to the second layer array.
is my assumption correct. Please do correct me if am wrong.
I am afraid that is incorrect. For a start there is no such thing as a 2D array. All Java® arrays are 1D. That is a 1D array of 1D arrays. And yes there is a difference. Arrays of arrays are better than 2D arrays because it is easier to create a jagged array.
krishnadhar Mellacheruvu wrote:. . . print the referrence variable that is the reason we are getting the 2d array class name @ symbol and hexa code. . . .
The corret style for declaring arrays of arrays is int myArray ... No space before  but 1 space after it.
No, that is not why you get that particular output. You get that particular output because arrays do not override the Object#toString() method and that returns class name, an at sign and hash code in hex.
When you call System.out.println(),
… except for Strings which don't need to be turned into Strings, then as if it used this print() method followed by println() which moves you to the next line. [Primitives can also be turned into Strings with the appropriate valueOf method of the String class.] If you go to the String#valueOf(Object) method, it tells you that if the reference passed points to null, it returns “null”, otherwise it calls the toString() method. You will see from that last link that you get class name, the at sign, and the hash code in hex. If you have overridden the toString method, you get something different, but you can see in the Java® Language Specification that the only overridden method in an array is clone(). If you look up the Class#getName() method, it tells you what sort of result you get from class names for arrays.
the API documentation wrote:This method calls at first String.valueOf(x) to get the printed object's string value.