Java提供了一组丰富的操作符来操纵变量。我们可以将所有Java运算符分成以下组 -
算术运算符
关系运算符
按位运算符
逻辑运算符
赋值运算符
杂项操作符
算术运算符
算术运算符与数学表达式中使用的代数方法相同。下表列出了算术运算符 -
假设整数变量A保持10,变量B保持20,则 -
操作符
描述
例
+(加法)
在操作符的两边添加值。
A + B将给予30
- (减法)
从左手操作数减去右手操作数。
A - B会给-10
*(乘法)
在运算符的任一侧乘以值。
A * B将给予200
/(司)
用右手操作数除以左手操作数。
B / A将给予2
%(模量)
用右手操作数除以左手操作数,并返回余数。
B%A将给0
++(增量)
将操作数的值增加1。
B ++给了21
- (减)
将操作数的值减少1。
B--给了19
关系运算符
Java语言支持以下关系运算符。
假设变量A保持10,变量B保持20,则 -
操作符
描述
例
==(等于)
检查两个操作数的值是否相等,如果是,则条件成立。
(A == B)不正确。
!=(不等于)
检查两个操作数的值是否相等,如果值不等于条件成为真。
(A!= B)是真的。
>(大于)
检查左操作数的值是否大于右操作数的值,如果是,则条件成为真。
(A> B)不正确。
(少于)
检查左操作数的值是否小于右操作数的值,如果是,则条件成为真。
(A
> =(大于或等于)
检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成为真。
(A> = B)不正确。
<=(小于或等于)
检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成为真。
(A <= B)是真的。
按位运算符
Java定义了几个按位运算符,可以将其应用于整数类型long,int,short,char和byte。
按位运算符对位执行,并执行逐位运算。假设a = 60和b = 13;现在以二进制格式,他们将如下 -
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a | b = 0011 1101
a ^ b = 0011 0001
〜a = 1100 0011
下表列出了按位运算符 -
假设整数变量A保持60,变量B保持13,则 -
操作符
描述
例
&(按位和)
如果二进制AND运算符存在于两个操作数中,则二进制AND运算符将对结果复制一位。
(A和B)将给出12是0000 1100
|(按位或)
二进制OR运算符如果存在于任一操作数中,则复制一位。
(A | B)将给出61,其为0011 1101
^(按位异或)
二进制XOR操作符复制该位,如果它设置在一个操作数中,而不是两者。
(A ^ B)将给出49,其为0011 0001
〜(按位称赞)
二进制补码运算符是一元的,具有“翻转”位的作用。
(〜A)将给出-61,由于有符号的二进制数,它是2 0的补码形式的1100 0011。
<
二进制左移操作符。左操作数值左移由右操作数指定的位数。
A << 2将给出240是1111 0000
>>(右移)
二进制右移操作符。左操作数值被右操作数指定的位移动。
A >> 2将给出15是1111
>>>(零填补右移)
右移零填充操作符。左操作数值右移由右操作数指定的位数,移位值用零填充。
A >>> 2将给出15是0000 1111
逻辑运算符
下表列出了逻辑运算符 -
假设布尔变量A为真,变量B为假,则 -
操作符
描述
例
&&(逻辑和)
称为逻辑AND运算符。如果两个操作数都不为零,则条件成立。
(A && B)是假的
||(逻辑或)
称为逻辑或运算符。如果两个操作数中的任何一个非零,则条件成立。
(A || B)是真的
!(逻辑不)
称为逻辑非运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑NOT运算符将为false。
!(A && B)是真的
作业人员
以下是Java语言支持的赋值运算符 -
操作符
描述
例
=
简单赋值运算符。将右侧操作数的值分配给左侧操作数。
C = A + B将A的值分配给C
+ =
添加AND赋值运算符。它将右操作数添加到左操作数,并将结果分配给左操作数。
C + = A等价于C = C + A
- =
减去AND赋值运算符。它从左操作数中减去右操作数,并将结果分配给左操作数。
C - = A等价于C = C-A
* =
乘以AND赋值运算符。它将右操作数与左操作数相乘,并将结果分配给左操作数。
C * = A等价于C = C * A
/ =
除以AND赋值运算符。它将左操作数与右操作数分开,并将结果分配给左操作数。
C / = A等价于C = C / A
%=
模数和赋值运算符。它需要使用两个操作数的模数,并将结果分配给左操作数。
C%= A等价于C = C%A
<< =
左移和赋值运算符。
C << = 2与C = C << 2相同
>> =
右移和赋值运算符。
C >> = 2与C = C >> 2相同
&=
按位AND赋值运算符。
C&= 2与C = C&2相同
^ =
按位异或运算符和赋值运算符。
C ^ = 2与C = C ^ 2相同
| =
按位包含OR和赋值运算符。
C | = 2与C = C |相同2
杂项经营者
Java语言支持的其他操作系统还不多。
条件运算符(?:)
条件运算符也称为三进制运算符。该运算符由三个操作数组成,用于评估布尔表达式。运算符的目标是决定哪个值应该分配给变量。操作符写为 -
variable x = (expression) ? value if true : value if false
以下是一个例子 -
例
publicclassTest{publicstaticvoidmain(Stringargs[]){inta,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运算符写为 -
( Object reference variable ) instanceof (class/interface type)
如果由操作符左侧的变量引用的对象通过右侧的类/接口类型的IS-A检查,则结果将为真。以下是一个例子 -
例
publicclassTest{publicstaticvoidmain(Stringargs[]){Stringname="James";// following will return true since name is type of Stringbooleanresult=nameinstanceofString;System.out.println(result);}}
输出结果如下 -
输出
true
如果正在比较的对象与右侧的类型兼容,则该运算符仍将返回true。以下是另一个例子 -
例
classVehicle{}publicclassCarextendsVehicle{publicstaticvoidmain(Stringargs[]){Vehiclea=newCar();booleanresult=ainstanceofCar;System.out.println(result);}}
输出结果如下 -
输出
true
Java运算符的优先级
运算符优先级决定表达式中术语的分组。这会影响表达式的评估。某些运算符的优先级高于其他运算符;例如,乘法运算符的优先级高于加法运算符 -
例如,x = 7 + 3 * 2;这里x被分配13,而不是20,因为operator *的优先级高于+,所以它首先被乘以3 * 2,然后加到7中。
这里,优先级最高的运算符出现在表的顶部,最底层的运算符出现在底部。在一个表达式中,先优先级较高的算子。
类别
操作符
关联性
后缀
>()[]。(点运算符)
左到右
一元
> ++ - - !〜
右到左
乘法
> * /
左到右
添加剂
> + -
左到右
转移
>>> >>> <<
左到右
关系型
>>> = <<=
左到右
平等
> ==!=
左到右
按位AND
>&
左到右
按位XOR
> ^
左到右
按位OR
> |
左到右
逻辑与
> &&
左到右
逻辑或
> ||
左到右
有条件的
?:
右到左
分配
> = + = - = * = / =%= >> = << =&= ^ = | =
右到左
下一步是什么?
下一章将介绍Java编程中的循环控制。本章将介绍各种类型的循环,以及如何在Java程序开发中使用这些循环以及它们正在使用的目的。