Java 中 x + x 和 2*x 的区别

Difference between x + x and 2*x in Java

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


我在 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 节省更多内存?

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