java的三目运算符优先级问题

时间:2020-12-27 17:23:13
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


这不就说明三目运算优先级比加高嘛,你还想问啥…