您的位置:首页 > 其它

三目运算符bug?原来是这样的!

2017-08-18 15:48 218 查看
代码1:

String name0 = null;
Integer isDisplay0 = null;
System.out.println("Integer测试:"+isDisplay0 == null?"":isDisplay0+"---I");
System.out.println("String测试:"+name0 == null?"":name0+"---S");


输出:

null---I
null---S


代码2:

String name0 = "123";
Integer isDisplay0 = 123;
System.out.println("Integer测试:"+isDisplay0 == null?"":isDisplay0+"---I");
System.out.println("String测试:"+name0 == null?"":name0+"---S");


输出2:

123---I
123---S


遇到这种问题,当时很懵逼,怎么三元运算符将前面的字符串给屏蔽了?,,,,


事实上:是运算符优先级的问题!

+优先级比==高,因此先进行+运算,再==运算

"Integer测试:"+isDisplay0 == null?"":isDisplay0

相当于

("Integer测试:"+isDisplay0 )== null?"":isDisplay0


因此结果显示前面的字符串被屏蔽了!就这么讽刺的考了下你的基础怎么样!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string