I have
char c1 = 'S'; // S as a character
char c2 = '\u0068'; // h in Unicode
char c3 = 0x0065; // e in hexadecimal
char c4 = 0154; // l in octal
char c5 = (char) 131170; // b, casted (131170-131072=121)
char c6 = (char) 131193; // y, casted (131193-131072=121)
char c7 = '\''; // ' apostrophe special character
char c8 = 's'; // s as a character
char[] autoDesignerArray = {c1, c2, c3, c4, c5, c6, c7, c8};
And
System.out.println(autoDesignerArray + "Mustang");
Output: [C@c17164Mustang
System.out.println(autoDesignerArray);
Output: Shelby's
I'm not understanding why I get the weird output when I concatenate the char array with a string. What is the "[C@c17164"? The location in memory? And why do I get that when I concatenate with a string, but I get what I would expect when I print it alone?
The expression System.out.println(X + Y)
is equal to the expression
System.out.println(X.toString() + Y.toString())
.
When you call System.out.println(autoDesignerArray + "Mustang")
autoDesignerArray.toString()
(which is "[C@c17164"
) is concatenated with "Mustang"
and the result is printed.
Since every has array has a class the string you get is the object representation of its object i.e. [C@c17164Mustang
where
[C
is a class name ([
represent 1d array)@
concates the the stringc17164
some hash codeMustang
your stringto check the class name of array do System.out.println(yourArray.getClass().getName());
For ex if you do System.out.println(new Object());
you will get something like java.lang.Object@25154f
the string representation of object created.
And to print the actual values of array do System.out.println((java.util.Arrays.toString(autoDesignerArray)));
which gives
[S, h, e, l, b, y, ', s]
Demo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With