Android是不是支持短路?
Posted
技术标签:
【中文标题】Android是不是支持短路?【英文标题】: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 上找到类似问题的事实可能给了我这个问题的答案,但安全总比抱歉好。
【问题讨论】:
【参考方案1】:||
支持短路。
如果您尝试优化这种情况,您应该尝试将每个值放入静态Set
,然后检查是否typeSet.contains(mimeType)
。
【讨论】:
【参考方案2】:是的,||
(条件或)运算符是一个短路运算符。引用Java Language Specification:
||
运算符类似于|
(§15.22.2),但仅当其左侧操作数的值为 false 时才计算其右侧操作数。它在语法上是左结合的(它从左到右分组)。它与副作用和结果值完全相关;也就是说,对于任何表达式 a、b 和 c,表达式 ((a)||(b))||(c) 的求值会产生与求值相同的结果,并以相同的顺序出现相同的副作用(a)||((b)||(c)) 的表达式。
【讨论】:
以上是关于Android是不是支持短路?的主要内容,如果未能解决你的问题,请参考以下文章