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值的表示以填充更宽的格式。

(重点补充)

charint 两种不同的类型,但这是有效的,因为intchar更精确。 也就是说, char每个值都可以表示为int因此在转换中不会丢失任何数据。