【发布时间】:2010-06-19 00:38:43
【问题描述】:
我在 google 上进行了一些搜索,但似乎找不到我要找的东西。我试图找出一些关于 Java 中算术工作方式的详细信息。例如,如果将两个 long 加在一起,这是否使用了将两个 int 加在一起时使用的相同加法运算符?此外,当您在算术表达式中混合 long 和 int 时,幕后会发生什么:
long result;
long operand a = 1;
int operand b = 999999999;
result = a + b;
如果有人能对此有所了解或发布相关文章的链接,那就太棒了。谢谢!
编辑:感谢到目前为止的回复。此外,只要您在表达式中分配给最宽基元类型的变量,使用不同基元执行算术是否安全?
【问题讨论】:
-
这不是一个论坛,对于回答您的问题的人来说,您有后续跟进并不是很透明。至于您的编辑:如果变量不是“宽”到足以容纳它的原始类型,Java 将不允许您将操作的结果分配给变量。换句话说,如果不专门转换为 int,则不能将“0L + 1”的结果分配给 int。
-
啊好吧,有道理。感谢您的跟进。
-
它并不完全安全,因为许多操作可能导致下溢或上溢。尝试 Long.MAX_VALUE + 1 但是,如果您分配给最宽的类型,它将始终编译。