【问题标题】:Does Android support short circuiting?Android是否支持短路?
【发布时间】:2012-03-17 14:08:49
【问题描述】:

这似乎是一个愚蠢的问题,因为 Java 确实短路了,但我记得 Android 并没有像我假设的那样完全使用 Java,所以在我写的这段代码中说:

... code omitted ...
else if (mimeType.equals("application/x-tar")
     || mimeType.equals("application/x-rar-compressed")
     || mimeType.equals("application/stuffit")
     || mimeType.equals("application/zip")
     || mimeType.equals("application/x-gzip"))

...把比较常见的东西(zip/rar)放在不太常见的东西(tarballs/gzip)之前会更好吗?

我无法在 SO 上找到类似问题的事实可能给了我这个问题的答案,但安全总比抱歉好。

【问题讨论】:

    标签: java android logic


    【解决方案1】:

    || 支持短路。

    如果您尝试优化这种情况,您应该尝试将每个值放入静态Set,然后检查是否typeSet.contains(mimeType)

    【讨论】:

      【解决方案2】:

      是的,||(条件或)运算符是一个短路运算符。引用Java Language Specification

      || 运算符类似于 | (§15.22.2),但仅当其左侧操作数的值为 false 时才计算其右侧操作数。它在语法上是左结合的(它从左到右分组)。它与副作用和结果值完全相关;也就是说,对于任何表达式 a、b 和 c,表达式 ((a)||(b))||(c) 的求值会产生与求值相同的结果,并以相同的顺序出现相同的副作用(a)||((b)||(c)) 的表达式。

      【讨论】:

        猜你喜欢
        • 2020-06-27
        • 1970-01-01
        • 1970-01-01
        • 2013-02-03
        • 1970-01-01
        相关资源
        最近更新 更多