- python - 如何按类查找元素
- javascript - 如何使用 jQuery 设置输入文本的值
- html - 如何使文本输入不可编辑?
- html - 如何忽略 tabindex 中的 HTML 元素?
询问 unrelated question我有这样的代码:
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
// Check property values
}
我收到一条评论,声称这不是最优的,而是(如果我理解正确的话)应该这样做:
public boolean equals(Object obj)
{
if (this == obj)
return true;
else if (obj == null)
return false;
else if (getClass() != obj.getClass())
return false;
// Check property values
}
由于 return 语句,我真的不明白为什么它们中的任何一个应该比另一个更有效或更快。给定一个特定的对象,就我所见,这两种方法都必须进行相同数量的检查。并且由于 return 语句,它们中的任何一个都不会运行额外的代码。
我在这里遗漏了什么吗?有什么关系吗?是否有一些编译器优化或发生了什么?
我知道这是微优化,我很可能会坚持第一种方式,因为我认为所有 if 都在同一位置时看起来更简洁。但我无能为力;我很好奇!
最佳答案
这两种情况生成的字节码是相同的,所以这纯粹是风格问题。
我生成了两个方法 e1
和 e2
并且都生成了这个字节码(使用 javap -v
读取):
public boolean e1(java.lang.Object); Code: Stack=2, Locals=2, Args_size=2 0: aload_0 1: aload_1 2: if_acmpne 7 5: iconst_1 6: ireturn 7: aload_1 8: ifnonnull 13 11: iconst_0 12: ireturn 13: aload_0 14: invokevirtual #25; //Method java/lang/Object.getClass:()Ljava/lang/Class; 17: aload_1 18: invokevirtual #25; //Method java/lang/Object.getClass:()Ljava/lang/Class; 21: if_acmpeq 26 24: iconst_0 25: ireturn
我省略了我在之后放置的代码以使其编译。
关于Java:if-return-if-return vs if-return-elseif-return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5663447/
使用之间真的有什么区别吗 If(this) { } Else If(that) { } Else { } 或使用, If(this) { } If(that) { } Else { } ? 执行速度更
我想在 netlogo 中有一个 if elseif else if else 结构,但目前它似乎不起作用。 ifelse random 100 < 68 [ set HBB-Genes "A,A
This question already has answers here: PHP parse/syntax errors; and how to solve them (19个回答) 2年前关闭
我正在通过特定于国家/地区的代码过滤我网站上的一些内容,我正在尝试添加 else 语句,这样它就不必将每个部分都作为单独的代码运行,除非我尝试的任何操作都会出错: 上面给出了以下错
每个人! 我有一个沉重的文件,在 A 和 D 列中有不同的值。 现在我想让这个脚本完成以下操作: 如果 A 列中的值是 D 列中的“选项一”和“K”,则删除这一整行。 此外,如果 A 列中的值为“选项
我正在编写一个脚本,允许用户按名称或数字输入月份。在下面的语句中,我可以在输入框和行中输入任何我想要的内容: ElseIf sMonthOfMaintenance = "1" Or "2" O
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
当语句 block 相当短时,我喜欢在多行中构造 if {} {} elseif {} {} ,如下所示。 if {cond1} {do1} elseif {cond2} {do2} elseif {
在我的提交按钮中,if/else if 语句对于我的正确/不正确输出无法正常工作。 例如问题:维多利亚在哪里?答案:不列颠哥伦比亚省 - 不正确。但是,如果我回答:艾伯塔省或不列颠哥伦比亚省,那就是正
当语句 block 相当短时,我喜欢在多行中构造 if {} {} elseif {} {} ,如下所示。 if {cond1} {do1} elseif {cond2} {do2} elseif {
我有这段代码: @Override public void inform(String data) { if (data.equals(C.SubscriptionEvents.WINDOW_
你好,我是 PHP 新手。 所以我在这里有一个查询,检查数据库中订单总计的状态是否设置为1或0 $chk_dscnt=mysql_query("SELECT * FROM `discount` WHE
我正在努力学习 C++。当我尝试执行 else 时,它没有按我认为的方式工作。 我已经尝试了所有我能想到的。 #include using namespace std; int main() {
我正在尝试使我的表单验证和数据库插入脚本正常工作,但再次遇到问题。我正在使用 elseif 语句来执行以下操作: 检查表单是否确实是由用户单击提交按钮提交的,并且所有数据字段均已填写,如果没有,则发出
如果我有两个参数“parameterX”和“parameterY” 我将使用“parameterX”和“parameterY”来推荐 sql snytax 喜欢 select * from test.
首先,当我提交时,我的选择选项有效,但我的输入字段无效。我正在使用 if else if 语句根据选项查询我的数据库。 我怀疑这部分 elseif 不起作用: elseif ($option == "
我在一些 if-else 子句中挣扎,想就如何设置逻辑提出建议。 我有以下代码: //if isset a or b if (isset(a) || isset(b) ) { //if
我试图在 Python 的 PuLP 中构建 If-Then-Else-If... 条件。 我查看了 MIP 中的 If-Then 和 If-Then-Else。但是,我试图了解如何将选择进一步向下传
虽然在这个程序中,我必须在一个循环中一次又一次地输入温度。当我输入温度后显示正确时,但是当我再次输入温度时程序自行终止。 代码是: import java.util.Scanner; public c
我的问题是如何用数学公式替换那些 if? if ($l 的形式.那是什么东西? 就像你说的,每 500 级你提高 20。所以我们知道我们移动 20/500对于每 1 个级别(因为好吧,如果我们将其乘以
我是一名优秀的程序员,十分优秀!