简介
该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
布尔表达式?表达式1:表达式2
variable x=
(expression) ? value if true:value if false三目运算符是我们经常在代码中使用的,a=(b==null?0:1);这样一行代码可以代替一个if-else,可以使代码变得清爽易读。
对于条件表达式b?xy,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式从不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a?b:c?d:e将按a?b:(c?d:e)执行。

代码实例

public class TernaryOperator {
 public static void main(String[] args){ 
  int a , b;
  a = 10; 
  b = (a == 1) ? 20: 30; 
  System.out.println( "三目运算符b的值是 : " + b ); 
  b = (a == 10) ? 20: 30;
  System.out.println( "三目运算符b的值是 : " + b );
  //下面使用if-else效果与上面相同
  if(a==1){
   b=20;
  }else{
   b=30;
  }
  System.out.println( "if-else b的值是 : " + b ); 
  if(a==10){
   b=20;
  }else{
   b=30;
  }
  System.out.println( "if-else b的值是 : " + b );
 }

}

运算符等级

 优先级
在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同
记忆方法
优先级记忆方法:
单目乘除为关系,逻辑三目后赋值。
单目运算符:一次作用一个变量的运算符,又叫一元运算符

单目:单目运算符+-(正负数),++-,!(逻辑非),~(按位取反)
乘除:算数运算符:*/%+-(*/%优先级肯定是大于+-的)
为:位运算符:~(按位取反)<<(左移)>>(右移),^(也可以位运算,二进制异或)
关系:关系运算符:><>=<===!=
逻辑:逻辑运算符(除!)&&1|&|^
三目:条件运算符A>B?X:
后:无意义,仅仅为了凑字数
赋值:=+=-=*=/=%=|=&=A=
优先级排序
[].()(方法调用)从左向右
!~++-+(一元运算)-(一元运算)从右向左
*/% 从左向右
+- 从左向右
<<>>>> 从左向右
<<=>>= instanceof 从左向右
==!= 从左向右

&  从左向右
^  从左向右
l   从左向右
&& 从左向右
 ||   从左向右
?: 从右向左
=+==*=/=%===A=<<= =>>=从右向左