赋值运算符

下面是Java语言支持的赋值运算符:

操作符

描述

例子

=

简单的赋值运算符,将右操作数的值赋给左侧操作数

C = A + B将把A + B得到的值赋给C

+ =

加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数

C + = A等价于C = C + A

- =

减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数

C - = A等价于C = C -
 A

* =

乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数

C * = A等价于C = C * A

/ =

除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数

C / = A等价于C = C / A

(%)=

取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数

C= A等价于C = CA

<< =

左移位赋值运算符

C << = 2等价于C = C << 2

>> =

右移位赋值运算符

C >> = 2等价于C = C >> 2

=

按位与赋值运算符

C= 2等价于C = C2

^ =

按位异或赋值操作符

C ^ = 2等价于C = C ^ 2

| =

按位或赋值操作符

C | = 2等价于C = C | 2

实例

面的简单示例程序演示了赋值运算符。复制并粘贴下面的Java程序并保存为Test.java文件,然后编译并运行这个程序:

public class Test {

  public static void main(String args[]) {

     int a = 10;

     int b = 20;

     int c = 0;

     c = a + b;

     System.out.println("c = a + b = " + c );

     c += a ;

     System.out.println("c += a  = " + c );

     c -= a ;

     System.out.println("c -= a = " + c );

     c *= a ;

     System.out.println("c *= a = " + c );

     a = 10;

     c = 15;

     c /= a ;

     System.out.println("c /= a = " + c );

     a = 10;

     c = 15;

     c %= a ;

     System.out.println("c %= a  = " + c );

     c <<= 2 ;

     System.out.println("c <<= 2 = " + c );

     c >>= 2 ;

     System.out.println("c >>= 2 = " + c );

     c >>= 2 ;

     System.out.println("c >>= a = " + c );

     c &= a ;

     System.out.println("c &= 2  = " + c );

     c ^= a ;

     System.out.println("c ^= a   = " + c );

     c |= a ;

     System.out.println("c |= a   = " + c );

  }

} 

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

c = a + b = 30

c += a  = 40

c -= a = 30

c *= a = 300

c /= a = 1

c %= a  = 5

c <<= 2 = 20

c >>= 2 = 5

c >>= 2 = 1

c &= a  = 0

c ^= a   = 10

c |= a   = 10

 

条件运算符(?:

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

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

实例

public class Test {

   public static void main(String args[]){

      int a , b;   

      a = 10;    

b = (a == 1) ? 20: 30;    

System.out.println( "Value of b is : " +  b );

      b = (a == 10) ? 20: 30;    

     System.out.println( "Value of b is : " + b );

   }

}

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

Value of b is : 30

Value of b is : 20

 

instanceOf 运算符

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

instanceof运算符使用格式如下:

( Object reference variable ) instanceOf  (class/interface type)

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

下面是一个例子:

String name = 'James';

boolean result = name instanceOf String; // 由于nameStrine类型,所以返回真

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

看下面的例子:

class Vehicle {}

 

public class Car extends Vehicle {

   public static void main(String args[]){

      Vehicle a = new Car();

      boolean result =  a instanceof Car;

      System.out.println( result);

   }

}

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

true

 

Java运算符优先级

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

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

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

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

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

+ + -

从右到左

乘性 

* /

左到右

加性 

+ -

左到右

移位 

>> >>>  << 

左到右

关系 

>> = << = 

左到右

相等 

==  !=

左到右

按位与

左到右

按位异或

^

左到右

按位或

|

左到右

逻辑与

&&

左到右

逻辑或

| |

左到右

条件

?:

从右到左

赋值

= + = - = * = / == >> = << == ^ = | =

从右到左

逗号

左到右