小编moh*_*med的帖子

Java 中的隐式转换是如何工作的?

我知道在 Java 中整数文字默认是int,所以如果我写这样的东西

byte byteValue = 2;
Run Code Online (Sandbox Code Playgroud)

Java 自动将文字值2(默认为 int)转换为字节。如果我写同样的事情

byte byteValue = 4/2;
Run Code Online (Sandbox Code Playgroud)

RHS 被评估为一个 int 并隐式转换为一个字节。

但是为什么在以下两种情况下不会发生隐式转换?

int n1 = 4;
byte value = n1/2;
Run Code Online (Sandbox Code Playgroud)

或在此

byte n1 = 4;
byte value = n1/2;
Run Code Online (Sandbox Code Playgroud)

我知道这两个示例的 RHS 都被评估为int。但是为什么Java不像前两种情况那样将其隐式转换为字节。是否只有在存在文字时才会隐式转换为较小的数据类型?

java casting type-conversion implicit-conversion narrowing

34
推荐指数
3
解决办法
1325
查看次数