【问题标题】:Why Implicit type conversion from int to char gave me no error? [duplicate]为什么从 int 到 char 的隐式类型转换没有给我错误? [复制]
【发布时间】:2020-06-13 07:13:24
【问题描述】:

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

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

【问题讨论】:

  • 包 abc;公共类 ecd { public static void main(String[] args) { char a; a = 65; System.out.print(a); } }
  • 通过编辑在问题中添加代码sn-p
  • 同时更正标题和问题中的错字 - 对话 -> 转换

标签: java casting type-conversion typecasting-operator


【解决方案1】:

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

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

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

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

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

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

更多详情,请参考this

【讨论】:

    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    相关资源
    最近更新 更多