Bootstrap

Java的条件运算符

条件运算符

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

 
  1. variable x = (expression) ? value if true : value if false

实例

 
  1. public class Test {
  2. public static void main(String[] args){
  3. int a , b;
  4. a = 10;
  5. // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
  6. b = (a == 1) ? 20 : 30;
  7. System.out.println( "Value of b is : " + b );
  8. // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
  9. b = (a == 10) ? 20 : 30;
  10. System.out.println( "Value of b is : " + b );
  11. }
  12. }

以上实例编译运行结果如下:

 
  1. Value of b is : 30
  2. Value of b is : 20

instanceof 运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。

instanceof运算符使用格式如下:

 
  1. ( Object reference variable ) instanceof (class/interface type)

如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

下面是一个例子:

 
  1. String name = "James";
  2. boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

如果被比较的对象兼容于右侧类型,该运算符仍然返回true。

看下面的例子:

 
  1. class Vehicle {}
  2. public class Car extends Vehicle {
  3. public static void main(String[] args){
  4. Vehicle a = new Car();
  5. boolean result = a instanceof Car;
  6. System.out.println( result);
  7. }
  8. }

以上实例编译运行结果如下:

 
  1. true

Java运算符优先级

当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。

再如,x = 7 + 3 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 2得到6,然后再加7。

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

;