为什么需要将三元运算符括在括号中?

时间:2014-07-29 17:22:45

标签: java

我有以下代码:

public static void main(String[] args) {
        String str1 = "one";
        String str2 = "two";
        String str3 = "three";
        String str4 = "four";
        String str5 = null;
        String str6 = "six";
        String str7 = "seven";
        char seperator = ',';
        String str = str1 + seperator + str2 + seperator + str3 + seperator + str4
                + seperator + (str5==null?"":str5) + seperator + str6 + seperator + str7;
        System.out.println(str);
    }

结果:

one,two,three,four,,six,seven

如果我删除了三元运算符周围的括号,那么结果如下:

null,six,seven

请您解释一下这种行为吗?

1 个答案:

答案 0 :(得分:2)

如果删除括号,那么它会将所有字符串一起添加并检查null,如下所示:

String str = ((str1 + seperator + str2 + seperator + str3 + seperator + str4
            + seperator + str5)==null?"":str5) + seperator + str6 + seperator 

它将str1 + seperator + str2 + .... + str5全部加在一起,然后检查它们是否等于null,它们不是,所以打印str5,即null然后打印其余的