gpt4 book ai didi

java - 在 Java 中推广?

转载 作者:IT老高 更新时间:2023-10-28 20:31:07 26 4
gpt4 key购买 nike

提升的规则是“当操作数属于不同类型时,自动二进制数字提升发生,较小的操作数类型被转换为较大的操作数类型”。但是操作数是相同类型的,例如,

byte=byte+byte // Compile time error... found int..

那为什么会这样呢?

最佳答案

byte 没有 + 运算符。相反,两个操作数都被提升为 int,所以你有

byte = byte + byte
... becomes (widening to find + operator) ...
byte = int + int
... becomes (result of + operator) ...
byte = int

... 然后失败,因为没有从 intbyte 的隐式转换。你需要转换:

byte a = 1;
byte b = 2;

byte c = (byte) (a + b);

这里是数值提升的实际规则,来自section 5.6.2 of the JLS :


当运算符对一对操作数应用二进制数值提升时,每个操作数都必须表示一个可转换为数值类型的值,以下规则依次适用,使用扩展转换(第 5.1.2 节)进行转换必要的操作数:

  • 如果任何操作数属于引用类型,则会执行拆箱转换(第 5.1.8 节)。然后:
  • 如果任一操作数为 double 类型,则另一个将转换为 double。
  • 否则,如果任一操作数为浮点类型,则将另一个转换为浮点类型。
  • 否则,如果任一操作数为 long 类型,则将另一个转换为 long。
  • 否则,两个操作数都将转换为 int 类型。

关于java - 在 Java 中推广?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1660856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com