三目运算符引发的一次事故
public class Test { public static void main(String[] args) throws Exception { String r4="111"; String r3="222"; Object [] row=new Object[]{r4,r3}; Object ts=row[1]==null?"无":row[1]; System.out.println("aa"+ts+"bb"); System.out.println("aa"+row[1]==null?"无":row[1]+"bb"); } }
发现页面没有按预期结果输出,检查发现后台的运算结果与预期不符,便于理解简化为上述代码形式
上述运算结果
aa222bb
222bb
不一致原因:二目运算符==与三目运算符?的优先级小于+,造成了实际运算如下
System.out.println(("aa"+row[1])==null?"无":row[1]+"bb");
所以正确做法是在三目运算符处加上括号
System.out.println("aa"+(row[1]==null?"无":row[1])+"bb");
本文来自博客园,作者:每天都要学一点,欢迎讨论和转载,转载请注明原文链接:https://www.cnblogs.com/yanan7890/p/9172228.html