java - 类型转换和编译时间常量

标签 java casting

byte b=5;
Integer i=(int)b;//b cast to int and int wrapped into Integer
Integer k=(byte)b;//compilation error, cannot convert from byte to Integer
Integer z=(byte)5;//compiles

我的问题是为什么 Integer z=(byte)5 可以编译而 Integer k=(byte)b 不能?就此而言,Integer z1 = (byte)5LInteger z2 = (byte)5.3F 也可以编译。是不是因为我试图转换一个编译时间常量而转换对它没有影响?

最佳答案

作为作业

整数 z=(byte)5

使用文字值,编译器会立即将其翻译成

Integer z = Integer.valueOf(5);

编译器不够智能,无法像这种情况那样引用变量:

Integer k= (byte)b;

关于java - 类型转换和编译时间常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344903/

相关文章:

java - 将对象列表转换为接口(interface)列表时出错

t-sql - 将 varchar 转换为 float 为 bigint

c++:转换运算符与赋值运算符与转换构造函数优先级

java - AbstractNCSARequestLog 不适用于 log4j

java - 文件未找到异常 : for properties file in Spring Boot application deployed in Tomcat

java - 线程 hibernate 直到收到另一个类的通知

java - 在 Java 1.7 中连同元素一起从数组中删除重复元素

C++ 类型转换数组

postgresql - SQL 错误 [22P02] 无法识别 where 子句中的 varchar 转换为整数

java - findViewById() 返回无法找到符号,但 ID 已在布局中定义?