Java char也是一个int?

Ziz*_*212 6 java type-conversion equivalence

我试图为课程完成一些代码:

public int getValue(char value) {
    if (value == 'y') return this.y;
    else if (value == 'x') return this.x;
Run Code Online (Sandbox Code Playgroud)

因为我最终可能无法返回任何东西,所以它告诉我最后这样做:

return value;
Run Code Online (Sandbox Code Playgroud)

这让我很吃惊,因为该方法的返回类型是类型int.然而,它告诉我要回来char!我正在使用eclipse,习惯于无数的警告和东西,这是一个重大的惊喜.

那么,char真的是一个int?为什么会这样?

Sot*_*lis 7

Java语言规范状态

当一个带有a的return语句Expression出现在方法声明中时,Expression必须可以为该方法的声明返回类型赋值(第5.2节),否则会发生编译时错误.

管理一个值是否可赋予另一个值的规则定义为

赋值上下文允许使用以下之一:

对原始类型的19个特定转换称为扩展原始转换:

  • charint,long,float,或'双

最后

在以下情况下,扩展的原始转换不会丢失有关数值总体大小的信息,其中数值保持不变:[...]

将a的扩展转换为char整数类型的T零 - 扩展了char值的表示以填充更宽的格式.

简而言之,char作为return语句表达式的值可int通过扩展基元转换分配给返回类型.