首页 > 解决方案 > 为什么从 int 到 char 的隐式类型转换没有给我错误?

问题描述

在数据类型层次结构中,char 在 int 之前,因此需要将 int 类型转换为 char 才能将其转换为 char。但是当我在代码片段上面运行时,它没有抛出任何错误,并且成功输出为 A。我能知道原因吗?

 public class ecd { 
   public static void main(String[] args) {
     char a; a = 65; 
     System.out.print(a); 
  }
}

标签: javacastingtype-conversiontypecasting-operator

解决方案


由于赋值转换在 Java 中的工作方式,这是允许的。

赋值转换发生在将表达式的值赋给变量时:必须将表达式的类型转换为变量的类型。

如果表达式是 byte、short、char 或 int 类型的常量表达式,如果变量的类型是 byte、short 或 char,并且常量表达式的值可以在变量的类型。

在您的代码中,表达式是一个常量 int 值,变量是 char 类型。int 值可以使用 ASCII 值以 char 类型表示。

这就是 Java 编译器允许这种转换而不需要显式转换的原因。

如果您尝试将 int 变量分配给 char 变量而不进行强制转换,而不是常量 int 值,则会出现编译错误。

有关更多详细信息,请参阅


推荐阅读