if,else和三元运算符哪个性能更好

javne 2008-09-29 10:45:46
三元运算符

expression1?expression2:expression3

和 if else

if(expression1)
expression2
else
expression3

谁的性能更好点


我一般情况下表达式不是很长都是用三元运算符,这样阅读代码的时候
很清晰
但不知道那个性能最佳
前几天看一面试题

int x=4;
System.out.println((x>4)?99.0:9);


输出的结果却是9.0
...全文
6870 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiudong_5210 2011-03-24
  • 打赏
  • 举报
回复
三元运算符
cuiyang_027 2010-01-05
  • 打赏
  • 举报
回复
三目运算效率会更高一些 个人比较喜欢三目运算
sunyujia 2008-10-01
  • 打赏
  • 举报
回复
追求代码简练用三元
追求清晰用if
在ireport一些动态执行的情况下,中只能用三元、
也就是说三元适用范围更广。
马老虎 2008-10-01
  • 打赏
  • 举报
回复
看人爱使用那个了!本人蛮喜欢IF!很灵活!
ZangXT 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yangkaixin1226 的回复:]
三元运算符好些,很清晰
[/Quote]
但是很多人写的时候喜欢嵌套,看起来很累,java的类库里有一些这样的代码,感觉不爽。
yangkaixin1226 2008-10-01
  • 打赏
  • 举报
回复
三元运算符好些,很清晰
justinavril 2008-09-29
  • 打赏
  • 举报
回复
While the statement is not so hard to understand or too long, using ?:.

But I don't think there is a great differences in performance.
EDDGA 2008-09-29
  • 打赏
  • 举报
回复
相对来看是三元性能较优吧,但是绝对上来看这个优势不会很离谱或者很明显,我感觉同4楼。我的话更多考虑代码的清晰——当然我写的都不是什么庞大的程序
ZangXT 2008-09-29
  • 打赏
  • 举报
回复
复杂情况可以采取类似的方法自己测试一下。
ZangXT 2008-09-29
  • 打赏
  • 举报
回复
使用?:运算符的话,问号后面的类型如果不同的话会带来一些类型方面的奇怪问题,这个可以看看java 语言规范。
性能也要看具体的问题,具体来分析。
一个最简单的问题:

public class Test {
public static void main(String[] args) {
int a=2,b=1;
int i;
if(a>b){
i=1;
}
else {
i=0;
}
System.out.println("line");
i=(a>b)?1:0;
}
}

比较一下:

Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return

public static void main(java.lang.String[]);
Code:
0: iconst_2
1: istore_1
2: iconst_1
3: istore_2
4: iload_1
5: iload_2
6: if_icmple 14
9: iconst_1
10: istore_3
11: goto 16
14: iconst_0
15: istore_3
16: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
19: ldc #3; //String line
21: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
24: iload_1
25: iload_2
26: if_icmple 33
29: iconst_1
30: goto 34
33: iconst_0
34: istore_3
35: return

}



这种简单情况从比较到赋值其实没有差别。但?:运算符的一个好处是代码简洁,清晰。
铑枪--突廆孒 2008-09-29
  • 打赏
  • 举报
回复
在class里边一般都使用if else ,这样更容易让人理解。如果你写成这样:
(if条件)?(ture表达式1):((else if条件)?(true表达式):(......))像这样的N多分支你用三目运算符,写多了,鬼晓得你写的是什么 。。。
GGMMYQL 2008-09-29
  • 打赏
  • 举报
回复
一般来说,是三元 运算符 效率高了

楼主你这个题目为什么会这样呢?

看到99.0了没有,结果需要和这个类型一致。
这个是scjp题目啊
xianrenxw 2008-09-29
  • 打赏
  • 举报
回复


三元运算符 性能更好.

我感觉 不需要知道哪个 性能好.

只要 认为 哪个熟悉, 哪个 方便就用那个 ,

zwy82 2008-09-29
  • 打赏
  • 举报
回复
我现在是初学,三元的还没学到。但是我觉得if和else好,更简单易懂!!
  • 打赏
  • 举报
回复
if...else... 与 三目运算符 并不能划等号的。三目运算符涉及一种称为
双目数值提升(binary numeric promotion)的语言特性,也就是楼主举
的 x > 4 ? 99.0 : 9 例子。

这是语言规范规定的,也没有为什么之说,呵呵,详见:

http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#341287

http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#170983

就性能而言,没有区别。
loaferwang 2008-09-29
  • 打赏
  • 举报
回复
相比较而言,我喜欢三元运算,对于if 我不太喜欢;

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧