String a = "aaa";
String s = "f:" + a != null ? a : "";
System.out.println(s);
结果输出“aaa”,而不是"f:aaa",为什么?
3 个解决方案
#1
连接操作符+优先级高于三目操作符,所以,它判断的是“f:”+a是不是null,要想得到你需要的那个结果,加个括号就是了
我觉得啊,括号真是好东西啊,我经常记不准操作符的优先级,所以,遇到不确定的地方我就加括号。
String s = "f:" + (a != null ? a : "");
我觉得啊,括号真是好东西啊,我经常记不准操作符的优先级,所以,遇到不确定的地方我就加括号。
#2
楼上正确的答案
#3
这不就说明三目运算优先级比加高嘛,你还想问啥…
#1
连接操作符+优先级高于三目操作符,所以,它判断的是“f:”+a是不是null,要想得到你需要的那个结果,加个括号就是了
我觉得啊,括号真是好东西啊,我经常记不准操作符的优先级,所以,遇到不确定的地方我就加括号。
String s = "f:" + (a != null ? a : "");
我觉得啊,括号真是好东西啊,我经常记不准操作符的优先级,所以,遇到不确定的地方我就加括号。
#2
楼上正确的答案
#3
这不就说明三目运算优先级比加高嘛,你还想问啥…