看下面这一段代码,很多人(包括我)会认为ch的值应该是’1’,输出应该为1,我们编译一下看看。
int num = 1;
char ch = (char) num;
System.out.println(ch);
在UTF-8编码方式下输出为乱码(其实这是一个字符,只是显示不出来),并不是我们认为的1。
这是因为在java中char是一个16位的Unicode字符,我们把其他类型转换为char类型是直接转成相对应的Unicode编码表中的字符。
如果我们要将其他类型转成char类型,应该使用Character类的forDigit方法:
public static char forDigit(int digit, int radix)
,该方法会返回一个按基数radix表示的数字digit所对应的字符。基数即我们说的进制。