【问题标题】:Difference between x + x and 2*x in JavaJava 中 x + x 和 2*x 的区别
【发布时间】:2020-05-30 21:23:37
【问题描述】:

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

【问题讨论】:

  • 你在哪里看到的?你能分享一个例子的链接吗?
  • "2*x 是否存在数据类型溢出问题?"是的,但它与x + x 完全相同。
  • 我很惊讶它没有使用x &lt;&lt; 1。但猜测“2”只是常量表的一个常量,x 已经是内存中的一个值。
  • @markspace 我很难相信差异是相关的。
  • 您可能可以运行一些测试并跟踪挂墙时间。

标签: java integer-overflow


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-11-08
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多