求解运算优先级问题?

_若相遇,莫相离。 2019-03-17 08:42:09

public class Text1 {

public static void main(String[] args) {
String s1= "ab" + "c" ;
String s2= "abc";
System.out.println(s1==s2);
System.out.println("---------");
System.out.println(s1.equals(s2));
System.out.println("---------");

System.out.println(s1 == s2+":"+s1.equals(s2));
}

}

为什么最后的输出结果为 :
false
---------
false
---------
false
...全文
220 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
早起晚睡 2019-03-21
  • 打赏
  • 举报
回复
我的和你的运行的也不一样 true
---------
true
---------
false
qq_39936465 2019-03-19
  • 打赏
  • 举报
回复
引用 2 楼 DreamDynasty 的回复:
可是当我以System.out.println((s1==s2)+":"+s1.equals(s2));
运行的时候是:ture,ture,ture:ture


+号优先基本高于 ==,先加后==肯定不等于,()的优先级别最高。

前2个都是true,不知道你当时为什么会是false
  • 打赏
  • 举报
回复
可是当我以System.out.println((s1==s2)+":"+s1.equals(s2)); 运行的时候是:ture,ture,ture:ture
ml_dark 2019-03-18
  • 打赏
  • 举报
回复
理论上应该输出:
true,true,false

最后一个System.out.println(s1 == s2+":"+s1.equals(s2));,你应该是想:
System.out.println((s1 == s2)+":"+s1.equals(s2));
注意括号,要不然就是s1这个对象和s2+":"+s1.equals(s2)的结果进行比较了

58,454

社区成员

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

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