首页 > 解决方案 > Java 中 x + x 和 2*x 的区别

问题描述

我正在阅读 Leetcode 问题的答案:https ://leetcode.com/problems/divide-two-integers/ 。这个问题不需要使用乘法。x+x在阅读了几个答案之后,我莫名其妙地产生了一个比2*x内存和避免类型溢出更好的误解。发布问题后,我找不到任何证据来支持这一说法。请忽略这个问题。


我看到 Java 中的一个常见做法是使用 x + x 而不是 2*x,尤其是对于 int。例如

int x = 1;
x += x;

代替

int x = 1;
x = 2*x;

使用

if (a < b + b) {
  ...
}

代替

if (a < 2*b) {
  ...
}

是否x + x比 节省更多内存2*x

标签: javainteger-overflow

解决方案


这似乎更像是一种习惯,而不是任何理由使用这个约定,除非 JVM 在承载我们的 + 操作方面比 * 更有效,这可能是我们完全可以忽略的


推荐阅读