三元运算符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
解决方案 »
- java框架图标
- Runtime.exec(cmd)不能清IE缓存?
- getContentPane()有作用吗?
- Jtable Jcheckbox 想做成前面一个checkbox,后面跟着一条记录,选中checkbox,也就选中该条,象sina邮箱,用Applet!
- 昨晚为了这句话我一夜都没睡觉,现在我发现我的智商太低了。。。。。。。。。。。。。。
- 程序中的继承问题
- java的方法如何返回多个值?
- 数组参数的使用问题
- java中如何做缩略图
- win2000下如何设置tomcat4.0的运行环境:(请高手不吝赐教,thx
- 怎样监听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一些动态执行的情况下,中只能用三元、
也就是说三元适用范围更广。