String[] strs = new String[]{"", null, "1", "a", "1 ", "a ", " 1", " a"};
String str;
for (int i = 0; i < strs.length; i++) {
str = "92=" + strs[i] == null ? "" : strs[i] + "|";
System.out.println(i + "\t[" + str + "]");
}
执行后,前面的“92=”怎么没有了?
------解决方案--------------------
str = "92=" + strs[i] == null ? "" : strs[i] + "改成
------解决方案--------------------
";
str = "92=" + (strs[i] == null ? "" : strs[i]) + "
------解决方案--------------------
";
------解决方案--------------------
因为三元运算符 ? :的优先级比二元+运算符低,先运行相加运算,因此实际上上面的式子等于:
str = (("92=" + strs[i]) == null) ? "" : strs[i] + "
------解决方案--------------------
";
先运算了相加+,再判断相加后的字符串是否等于null。
楼主莫非想表达:
str = "92=" + ((strs[i] == null) ? "" : strs[i] + "
------解决方案--------------------
");
这样括起来就先运行三元运算符。