java三元运算中出现== 是先==还是先三元运算呢?

boolean b=true?false:true==true?false:true; ==在三元运算外还是里面呢?

java运算符优先级==等于优先级高于?=三目运算符,所以是在三元里面。

这道题等价于三目运算true?false:(true==true?false:true),可以肯定的是在这里==的运算优先级是高于三目运算符的,
而且运算结果直接就是第一个问号后的false,后面写再多东西也没用了。

先给答案吧,是在三元运算里面.

图片说明

如图,如果==运算是在三元运算外面的话是会报错的,因为最终运算的结果是一个整型,而==运算最终结果是一个布尔型.

先算外面的。从左到右判断。

在里面,刚刚运行了一下,结果为false,若boolean b = true?A:B; 你后面的==应该属于B部分,自己理解。。

这是我前段时间刚整理的关于Java运算符优先级的博客,一定可以帮到您
Java运算符优先级

像这种容易混淆的问题,最好加上(),就不会纠结了。。。

三元运算里面,这种不好分辨的最好加括号

不要玩这红运算符优先级的游戏了,这些都是上学的时候老师玩学生的。
无论优先级如何,把自己想要首先运算的部分用括号括起来,或者写成多行。
好处
1、代码阅读性好
2、编译器变化时不会出问题

遇到这种情况,假装所有开发者都不知道优先级。多套几个括号,代码清晰,也不会误导别人。