关于Java中char d = 'a' + 3;输出结果为'd'的疑问求解
为什么
char d = 'a' + 3;执行System.out.println(d)输出'd'而非数值 这是Java的类型转换和方法重载机制共同作用的结果,拆解来看:
char类型的本质
Java里的char是16位无符号整数类型,对应UTF-16编码的字符码点。比如字符'a'对应的十进制码点是97,'d'是100。运算时的自动类型提升
当char类型和整数(这里的3是int类型)做加法时,char会被自动提升为int类型参与计算。所以'a' + 3实际是97 + 3 = 100,得到的结果是int类型的100。赋值时的窄化转换
把int类型的100赋值给char变量d时,因为100在char的取值范围(0到65535)内,Java会自动执行窄化转换,将int值转换为对应的char字符——也就是码点100对应的'd'。println方法的重载行为
System.out.println()有专门处理char类型的重载方法,当传入char参数时,它会直接输出该字符对应的Unicode符号,而不是转换为数值。如果想输出对应的数值,需要手动强制转换为int:
System.out.println((int)d); // 输出100
内容的提问来源于stack exchange,提问作者Julia Tran
相关产品推荐
相关产品推荐

