x和x2B之间的差异;Java中的x和2*x

x和x2B之间的差异;Java中的x和2*x,java,integer-overflow,Java,Integer Overflow,我正在读Leetcode问题的答案:。这个问题要求不使用乘法。在阅读了一些答案后,我不知何故产生了一种误解,即x+x在内存和避免类型溢出方面优于2*x。发问之后,我找不到任何证据支持这一说法。请忽略这个问题 我看到Java中的一种常见做法是使用x+x而不是2*x,特别是对于int int x = 1; x += x; 而不是 int x = 1; x = 2*x; if (a < 2*b) { ... } 使用 if(a

我正在读Leetcode问题的答案:。这个问题要求不使用乘法。在阅读了一些答案后,我不知何故产生了一种误解,即
x+x
在内存和避免类型溢出方面优于
2*x
。发问之后,我找不到任何证据支持这一说法。请忽略这个问题


我看到Java中的一种常见做法是使用x+x而不是2*x,特别是对于int

int x = 1;
x += x;
而不是

int x = 1;
x = 2*x;
if (a < 2*b) {
  ...
}
使用

if(a
而不是

int x = 1;
x = 2*x;
if (a < 2*b) {
  ...
}
if(a<2*b){
...
}

x+x
2*x
节省的内存稍微多一些吗?

这似乎是一种习惯,没有任何理由使用这种约定,除非JVM在执行+操作时比*(这可能是我们完全可以忽略的)更有效,你在哪里看到的?您可以分享一个示例链接吗?“2*x是否存在数据类型溢出问题?”是的,但它与
x+x
完全相同。我很惊讶它没有使用
x@markspace,我很难相信这种差异是相关的。您可能可以运行一些测试并跟踪墙时间。