I am trying to print the letters of the alphabet in caps. So I wrote this in a for loop:
System.out.print(Character.toChars(i));
//where i starts at 65 and ends at 90
This works fine and prints the letters but In my code I wanted to put a space between the letters to make it look nicer. So i did this:
System.out.print(Character.toChars(i) + " ")
Why does it print the memory address of the characters instead of the letter? The solution I came up with was to explicitly convert the char to a new String object:
String character = new String(Character.toChars(i));
System.out.print (character + " ");
but I'm not quite sure why I can't just write "Character.toChars(i)"
In the first one Does the method(Character.toChars()) point to the address of the character and System.out.print is smart enough to print the value at that address? i.e the corresponding letter?
System.out.print(Character.toChars(i))
callsPrintStream.print(char[])
, an overload that handleschar[]
specially.Character.toChars(i) + " "
is really equivalent toCharacter.toChars(i).toString() + " "
; callingtoString()
on an array type results in a string representation of its address (this behaviour is directly inherited fromObject
).A simpler solution for your particular case may be this: