Java中的char和int

Rog*_*ger 6 java

看到这段代码工作,我感到很惊讶.我认为char和int是Java中的两种不同的数据类型,我不得不将char转换为int来为此提供ascii equivelent.为什么这样做?

String s = "hello";
int x = s.charAt(1);
System.out.println(x);
Run Code Online (Sandbox Code Playgroud)

ysh*_*vit 10

A char可以自动转换为int.见JLS 5.1.2:

以下19种基本类型的特定转换称为扩展基元转换:

...

  • char到int,long,float或double

...

将有符号整数值扩展为整数类型T只需对整数值的二进制补码表示进行符号扩展,以填充更宽的格式.将char的扩展转换为整数类型T零扩展char值的表示以填充更宽的格式.

(重点补充)


Kev*_*vin 4

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