Convert int to char in java

user2640480 picture user2640480 · Aug 1, 2013 · Viewed 619k times · Source

Below is a code snippet,

int a = 1;
char b = (char) a;
System.out.println(b);

But what I get is empty output.

int a = '1';
char b = (char) a;
System.out.println(b);

I will get 1 as my output.

Can somebody explain this? And if I want to convert an int to a char as in the first snippet, what should I do?

Answer

jh314 picture jh314 · Aug 1, 2013
int a = 1;
char b = (char) a;
System.out.println(b);

will print out the char with Unicode code point 1 (start-of-heading char, which isn't printable; see this table: C0 Controls and Basic Latin, same as ASCII)

int a = '1';
char b = (char) a;
System.out.println(b);

will print out the char with Unicode code point 49 (one corresponding to '1')

If you want to convert a digit (0-9), you can add 48 to it and cast, or something like Character.forDigit(a, 10);.

If you want to convert an int seen as a Unicode code point, you can use Character.toChars(48) for example.