强制转换时的 Java 编译时错误

标签 java

下面的代码给我编译时错误类型不匹配:无法从 int 转换为字节

int i = 10;
byte b = i;

但下面没有

 final int i = 10;
 byte b = i;

我不明白为什么编译器会在 final 的情况下运行?

最佳答案

我认为这是因为 10 适合一个字节,但如果整数是占用超过 8 位的东西,那么它将无法再正确地执行此分配。

编辑

澄清一下,将其设置为 final 允许编译器将 int 视为常量,以便它可以进行常量折叠。它可能会阻止使用非最终 int 进行赋值,因为它在编译时不知道该值,并且它可能比一个字节可以容纳的值大得多。

关于强制转换时的 Java 编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12203019/

相关文章:

java - 我当前位置附近的城市或城镇

java - 线程计数器在第一个刻度后不会增加

java - 如何通过 YouTube API V3 获取私有(private)播放列表 ID?

java - 使用jmockit测试main方法

java - 使用 Struts 2 通配符配置时如何返回 404 错误?

java - Spring Batch - 如何根据上一步中创建的参数生成并行步骤

java - 单击超链接时将一行从一个表插入到mysql中的另一个表

java - 尝试使用 Hive streaming api 建立连接时,hive 暂存目录的权限被拒绝

java - 我想在我的 Android 应用程序中使用大整数,但是当我应用运算符时我会收到错误?

java - 点击多个播放声音的按钮时出现错误 (1, 19)