java - 为什么从 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);
}
}
解决方案
由于赋值转换在 Java 中的工作方式,这是允许的。
赋值转换发生在将表达式的值赋给变量时:必须将表达式的类型转换为变量的类型。
如果表达式是 byte、short、char 或 int 类型的常量表达式,如果变量的类型是 byte、short 或 char,并且常量表达式的值可以在变量的类型。
在您的代码中,表达式是一个常量 int 值,变量是 char 类型。int 值可以使用 ASCII 值以 char 类型表示。
这就是 Java 编译器允许这种转换而不需要显式转换的原因。
如果您尝试将 int 变量分配给 char 变量而不进行强制转换,而不是常量 int 值,则会出现编译错误。
有关更多详细信息,请参阅此。
推荐阅读
- ios - 每次我在 Swift 中使用它时都必须启动一个 BLE 外围设备
- javascript - 来自 react-router-dom 的提示问题未触发
- mysql - 在存储过程中调用存储过程并将结果设置为变量时出现问题
- typescript - VSCode API:在终端中运行命令并使用输出
- python - 如何在 PyQt5 中为屏幕上的点移动设置动画
- javascript - 如何在 URL 中调用 echo 包括?
- django - TemplateDoesNotExist django 休息框架
- tensorflow - 无法安装tensorflow js
- python-3.x - 根据条件填充多个数据框列中的空值
- python - Python 中的 ElasticNetCV 与 R 中的 cvglmnet