java - int 的基本算术运算 - Java

标签 java arithmetic-expressions

我最近注意到 Java 关于 Java 中基本算术运算的特性。用下面的代码

byte a = 3;
byte b = 4;
byte c = a * b;

我收到“类型不匹配”编译错误...

Java中的基本算术运算(+-*/)只对primitive进行int 和高阶数据类型(longdouble 等),而 byteshort 首先转换为 int 然后计算?

最佳答案

bytecharshort 的操作被扩展为 int,除非编译器可以确定该值是在范围内。

final byte a = 3, b = 4;
byte c = a * b; // compiles

final byte a = 3, b = 40;
byte c = a * b; // compiles

final int a = 3, b = 4;
byte c = a * b; // compiles !!

但是

byte a = 3, b = 4;
byte c = a * b; // doesn't compile as the result of this will be `int` at runtime.

final byte a = 30, b = 40;
byte c = a * b; // doesn't compile as the value is too large, will be an `int`

顺便说一句,即使它导致溢出,也会编译。 :]

final int a = 300000, b = 400000;
int c = a * b; // compiles but overflows, is not made a `long`

关于java - int 的基本算术运算 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14125843/

相关文章:

java - 从 .der 更新/生成新的 .p12/.jks

java - 无法提取 Android KeyStore 私有(private)指数

java - 运行 mvn 时,它会抛出 java home not Defined 错误

java - 如何用Java进行二进制算术运算?

javascript做减法的小数点太多

java - 实现基本的 REST API - ServletException

java - NumberFormatException 对于法语输入字符串

java - 如何显示组合的算术表达式?就像 (3.3+6.2)*1.2 而不是 9.5 * 1.2

javascript - 为什么 '+' 运算符在 JavaScript 中表现异常?

java - Android - 计算并存储算术表达式的答案