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

knxw0001 2016-03-15 10:40:41
String a = "aaa";
String s = "f:" + a != null ? a : "";
System.out.println(s);


结果输出“aaa”,而不是"f:aaa",为什么?
...全文
429 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Intboy 2016-03-15
  • 打赏
  • 举报
回复
这不就说明三目运算优先级比加高嘛,你还想问啥…
li1175596793 2016-03-15
  • 打赏
  • 举报
回复
楼上正确的答案
三仙半 2016-03-15
  • 打赏
  • 举报
回复
连接操作符+优先级高于三目操作符,所以,它判断的是“f:”+a是不是null,要想得到你需要的那个结果,加个括号就是了
String s = "f:" + (a != null ? a : "");
我觉得啊,括号真是好东西啊,我经常记不准操作符的优先级,所以,遇到不确定的地方我就加括号。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧