作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是想知道这些代码中的一个是否比另一个更受青睐。
例如:
boolean even;
if (number % 2 == 0)
even = true;
else
even = false;
备用代码:
boolean even = (number % 2 == 0);
我认为其中一个比另一个更受欢迎,因为一个更短,但我觉得第一个代码更容易阅读(作为初学者)。我只是想知道真正的答案,为什么一个比另一个更受青睐,或者即使一个比另一个更受青睐?
最佳答案
我会选择第二个,因为你避开了分支。在第一种情况下,您有一个 if-else
结构。这意味着您的代码中有一个分支。第二个示例代码中没有分支,这提高了可读性。
正如 @Dev 指出的,当你将 Java 源代码编译为字节码时,不幸的是它会生成一个分支。
从技术上讲,编译器可以选择在汇编中执行类似的操作:
TEST eax ; test for zero of "number % 2"
PUSHF ; push flag-registers to the stack
POP ebx ; pop them into a register
SHR ebx,?? ; shift to the FZ flag
AND ebx,1 ; cancel out the other flags
但是,这只是一种可能性,很可能并非如此。
关于java - 为什么一个代码比另一个更受青睐?或者有什么关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19386648/
我已将一个站点完全转换为 Razor,并希望它忽略任何残留的 .aspx 文件。这些都造成了问题 未从生产服务器中删除和 由 NuGet 包重新创建。在这种情况下,ASPX 优先,对等效 CSHTML
我是一名优秀的程序员,十分优秀!