我知道在 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不像前两种情况那样将其隐式转换为字节。是否只有在存在文字时才会隐式转换为较小的数据类型?