我有以下代码:
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
请您解释一下这种行为吗?
答案 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
然后打印其余的