三元运算符expression1?expression2:expression3 和 if elseif(expression1)
expression2
else
expression3谁的性能更好点
我一般情况下表达式不是很长都是用三元运算符,这样阅读代码的时候
很清晰
但不知道那个性能最佳
前几天看一面试题int x=4;
System.out.println((x>4)?99.0:9);
输出的结果却是9.0

解决方案 »

  1.   

    一般来说,是三元 运算符 效率高了楼主你这个题目为什么会这样呢?看到99.0了没有,结果需要和这个类型一致。
    这个是scjp题目啊
      

  2.   

    在class里边一般都使用if else ,这样更容易让人理解。如果你写成这样:
    (if条件)?(ture表达式1):((else if条件)?(true表达式):(......))像这样的N多分支你用三目运算符,写多了,鬼晓得你写的是什么 
      

  3.   

    使用?:运算符的话,问号后面的类型如果不同的话会带来一些类型方面的奇怪问题,这个可以看看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: returnpublic 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}这种简单情况从比较到赋值其实没有差别。但?:运算符的一个好处是代码简洁,清晰。
      

  4.   

    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.
      

  5.   

    if...else... 与 三目运算符 并不能划等号的。三目运算符涉及一种称为
    双目数值提升(binary numeric promotion)的语言特性,也就是楼主举
    的 x > 4 ? 99.0 : 9 例子。这是语言规范规定的,也没有为什么之说,呵呵,详见:http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#341287http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#170983就性能而言,没有区别。
      

  6.   

    我现在是初学,三元的还没学到。但是我觉得if和else好,更简单易懂!!
      

  7.   

    但是很多人写的时候喜欢嵌套,看起来很累,java的类库里有一些这样的代码,感觉不爽。
      

  8.   

    追求代码简练用三元
    追求清晰用if
    在ireport一些动态执行的情况下,中只能用三元、
    也就是说三元适用范围更广。