Java中的char和int
看到这段代码工作,我感到很惊讶。 我认为char和int是Java中的两种不同的数据类型,我不得不将char转换为int来为此提供ascii equivelent。 为什么这样做?
String s = "hello"; int x = s.charAt(1); System.out.println(x);
char
可以自动转换为int
。 见JLS 5.1.2 :
以下19种关于基本类型的特定转换称为扩展基元转换:
…
- char到int,long,float或double
…
将有符号整数值扩展为整数类型T只需对整数值的二进制补码表示进行符号扩展,以填充更宽的格式。 将char扩展为整数类型T零扩展char值的表示以填充更宽的格式。
(重点补充)
char
和int
是两种不同的类型,但这是有效的,因为int
比char
更精确。 也就是说, char
每个值都可以表示为int
因此在转换中不会丢失任何数据。