概述
只有一种类型的“if”语句。另一个是条件表达式。至于哪些将执行更好:他们可以编译为相同的字节码,我希望他们的行为相同,或者如此接近,你绝对不会想要选择一个在性能方面。
有时,if语句将更易读,有时条件运算符将更易读。特别是,我建议使用条件运算符时,两个操作数是简单和无副作用,而如果两个分支的主要目的是他们的副作用,我可能会使用一个if语句。
这里有一个示例程序和字节码:
public class Test {
public static void main(String[] args) {
int x;
if (args.length > 0) {
x = 1;
} else {
x = 2;
}
}
public static void main2(String[] args) {
int x = (args.length > 0) ? 1 : 2;
}
}
用javap -c反编译的字节码测试:
public class Test extends java.lang.Object {
public Test();
Code:
0: aload_0
1: invokespecial #1
4: return
public static void main(java.lang.String[]
Code:
0: aload_0
1: arraylength
2: ifle 10
5: iconst_1
6: istore_1
7: goto 12
10: iconst_2
11: istore_1
12: return
public static void main2(java.lang.String[
Code:
0: aload_0
1: arraylength
2: ifle 9
5: iconst_1
6: goto 10
9: iconst_2
10: istore_1
11: return
}
正如你可以看到,字节码在这里有一点区别 – 无论istore_1是发生在分支内还是不发生(不像我以前的巨大缺陷的尝试:)但我会很惊讶,如果JITter结束了不同的本地代码。
最后
以上就是留胡子往事为你收集整理的java 三元运算符 效率_java – 哪个“if”结构更快 – 语句或三元运算符?的全部内容,希望文章能够帮你解决java 三元运算符 效率_java – 哪个“if”结构更快 – 语句或三元运算符?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复