char可以转换成任意一种数值类型,任意一种数值类型也可以转换成char。
Java中的char用的是Unicode编码,2字节,16位。
转换时,只用到低16位,剩下的位全被忽略。例如:
char ch = (char)0XAB0041; // ch值为A,因为只考虑低16为,即0041H,找到ASCII码表中对应为A
浮点数转换为char型时,先转成int型,再继续转成char型,例如:
char ch = (char)65.25; // ch值为A,65.25先变成65,在转换成char,找到ASCII码表中对应为A
当char转换成数值型时,这个字符的Unicode码就被转换成某个特定的数值类型,例如:
int i = (int)'A'; // i值为65
如果转换结果适用于目标变量,则可以隐式转换,否则必须显式转换,例如:
byte b = 'a'; // a的Unicode码是97,在byte的范围内,可以隐式转换
byte b = (byte)'\uFFF4'; // 该数超过一个字节,为了强制赋值,必须显示转换
所有数值操作符都可以用在char型操作数上,若结合数字则转换成数字,若结合字符串则与该串相连
int i = '2' + '3'; // 字符2转成数为50,3变为51,则 i 等于101
int j = 2 + 'a'; // a转换成数为97,则 j 等于99