为什么从 int 到 char 的隐式类型转换没有给我任何错误?

Why Implicit type conversion from int to char gave me no error?

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

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

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

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

如果表达式是 byte、short、char 或 int 类型的常量表达式,并且变量的类型是 byte、short 或 char,并且常量的值可以使用缩小原始转换expression 可以用变量的类型表示。

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

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

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

详情请参考this