Java练习:条件表达式语句

返回 Java编程练习目录


条件运算符是Java中唯一的三元运算符(ternary operator),它可以替代简单的if-else语句。

b-e ? exp1:exp2;

1.求值顺序

计算?左边的布尔表达式b-e的值,如果是true,求分号前的exp1的值,并以该值为整个条件表达式的值;如果是false,跳过exp1,求exp2的值并以该值为整个条件表达式的值。

如同计算Math.min(a,b),条件运算符替代简单的if-else语句。

minVal = (a < b) ? a : b;

下面的代码,运行并能够解释答案即可。

    public static void 条件表达式的求值顺序(){        
        int i = 0;
        int k = (i = 1)<0? i+(i = 2)+i:(i = 3)+i;
        System.out.println(k+" "+i); //6 3
    }

2.数据类型

如果exp1和exp2具有相同的类型T,条件表达式的类型为T。

如果exp1和exp2中一个有类型T(byte、short或char),而另一个是int类型的常量表达式,其值又可以用类型T表示,则T为条件表达式的类型。

混合类型的计算,e2和e3被提升之后的类型为条件表达式的类型。

    public static void 条件表达式的type(){
        char x = 'X';
        int i = 0;
        System.out.println(true ? x : 0); //类型为char
        System.out.println(true ? x : -1); //类型为int
        System.out.println(false ? i : x); //类型为int
    }

3.避免啰嗦

    public static void coinFlip(){//抛硬币    
        if (Math.random() < 0.5) System.out.println("字");
        else                     System.out.println("徽");
    }

String s =(Math.random() < 0.5)?"字":"徽"; //这样较好

再例如:

String  str= "Thank you " + (person.isMale() ? "Mr. " : "Ms. ") + person.getName() + "。";




你可能感兴趣的:(《编程导论(Java)》训&练)