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

Java 为什么三元运算符需要放在括号中?,java,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 = "se

我有以下代码:

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

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

如果删除括号,它会将所有字符串加在一起,并检查空值,如下所示:

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

它添加了
str1+分隔符+str2+…+str5
一起,然后检查它们是否等于
null
,它们不是,所以它打印
str5
,即
null
,然后打印调用的其余部分。它首先将str5与第一部分连接,然后检查它是否等于
null