Java Android支持短路吗?
这似乎是一个愚蠢的问题,因为Java确实会短路,但我记得Android在使用Java时并不像我想象的那样使用Java,所以在我编写的这段代码中说:Java Android支持短路吗?,java,android,logic,Java,Android,Logic,这似乎是一个愚蠢的问题,因为Java确实会短路,但我记得Android在使用Java时并不像我想象的那样使用Java,所以在我编写的这段代码中说: ... code omitted ... else if (mimeType.equals("application/x-tar") || mimeType.equals("application/x-rar-compressed") || mimeType.equals("application/stuffit") |
... 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)之前会更好吗
事实上,我在上找不到类似的问题,所以可能给了我答案,但总比抱歉好。是的,|
(条件or)运算符是一个短路运算符。引述:
|
运算符类似于|
(),但仅当其左侧操作数的值为false时才计算其右侧操作数。它在语法上是左关联的(从左到右分组)。就副作用和结果值而言,它是完全相关的;也就是说,对于任何表达式a、b和c,表达式((a)| |(b)| |(c)的计算产生与表达式(a)| |((b)| |(c))的计算相同的结果,并且以相同的顺序发生相同的副作用
| |
支持短路
如果您试图优化这种情况,您应该尝试将每个值放入一个静态集中
,然后检查typeSet.contains(mimeType)