三元运算符expression1?expression2:expression3 和 if elseif(expression1)
expression2
else
expression3谁的性能更好点
我一般情况下表达式不是很长都是用三元运算符,这样阅读代码的时候
很清晰
但不知道那个性能最佳
前几天看一面试题int x=4;
System.out.println((x>4)?99.0:9);
输出的结果却是9.0
expression2
else
expression3谁的性能更好点
我一般情况下表达式不是很长都是用三元运算符,这样阅读代码的时候
很清晰
但不知道那个性能最佳
前几天看一面试题int x=4;
System.out.println((x>4)?99.0:9);
输出的结果却是9.0
解决方案 »
- 如何给软件加密
- Properties遇到的问题
- java调用visit里面的数据
- 请问这是java的什么写法?就像以前第一次遇到内部类时的样子!
- 高分求救,如何动态引入一个jar文件
- bool值:10 > 5 && 1 > 0 || 3 > 5 || 20 == 8
- java字符如何得到它的ASCII值?
- 各位仁兄,有没有用java快速访问excel的方法
- 请问大家一个低级的问题:在windows里显示对话框的函数是AfxMessageBox("OK"),在纯java里怎么用,还要引用什么包吗?
- 急啊!!!java中如何调用C中数据类型指计?
- 怎样监听Enter键?
- Java中是否有类似Windows的消息映射机制?
这个是scjp题目啊
(if条件)?(ture表达式1):((else if条件)?(true表达式):(......))像这样的N多分支你用三目运算符,写多了,鬼晓得你写的是什么
性能也要看具体的问题,具体来分析。
一个最简单的问题: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}这种简单情况从比较到赋值其实没有差别。但?:运算符的一个好处是代码简洁,清晰。
双目数值提升(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就性能而言,没有区别。
追求清晰用if
在ireport一些动态执行的情况下,中只能用三元、
也就是说三元适用范围更广。