gpt4 book ai didi

java - 类型提升 Java

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:43 26 4
gpt4 key购买 nike

我正在通过 Herbert Schildt 的书学习 Java:Java 初学者指南。在那本书中出现了这段代码:

// A promotion surprise!
class PromDemo{
public static void main(String args[]){
byte b;
int i;
b = 10;
i = b * b; // OK, no cast needed

b = 10;
b = (byte) (b * b); // cast needed!!

System.out.println("i and b: " + i + " " + b);
}
}

我不明白为什么我必须在行中使用 (byte):

b = (byte) (b * b);     // cast needed!!

b 被定义为一个字节,b * b 的结果是 100,这是一个字节的正确值 (-128...127)。

谢谢。

最佳答案

JLS ( 5.6.2. Binary Numeric Promotion ) 给出了有关将数字类型与二元运算符组合的规则,例如乘法运算符 (*):

  • If either of the operands is of type double, the other one will be converted to a double.
  • Otherwise, if either of the operands is of type float, the other one will be converted to a float.
  • Otherwise, if either of the operands is of type long, the other one will be converted to a long.
  • Otherwise, both operands will be converted to an int.

最后一点适用于你的情况,字节被转换为整数然后相乘。

关于java - 类型提升 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076537/

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