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是不是支持短路?的主要内容,如果未能解决你的问题,请参考以下文章

检查android设备是不是支持某些功能

Android 图的最短路径算法

Android 旧版本是不是支持 Android 应用中的 Webrtc 视频聊天

Android API 是不是支持蓝牙 4.2 版?

Android是不是支持虚拟内存

我们可以将 Android 项目从 Eclipse 导入到 Android Studio,它是不是支持 SVN?