Java-基本运算符
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 < B) 为真 |
>= | 大于或等于,检查左操作数的值是否大于或等于右操作数的值,如果是,则结果为真。 | (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:
运算符 | 描述 | 例子 |
---|---|---|
& | 按位与,如果两个操作数当前位都为1,则结果位为1,否则为0。 | (A&B)将等于12,即0000 1100 |
| | 按位或,如果任一操作数当前位为1,则结果位为1,否则为0。 | (A | B)将等于61,即0011 1101 |
^ | 按位异或,如果两个操作数该位的值不同,则结果位为1,否则为0。 | (A ^ B)将等于49,即0011 0001 |
~ | 按位取反,翻转所有位的值,即将1转为0, 0转为1。 | (~A)将等于-61,即1100 0011 |
<< | 左移,左操作数的值向左移动右操作数指定的位数。 | <<2 将等于240,即1111 0000 |
>> | 右移,左操作数的值向右移动右操作数指定的位数。 | A >> 2 将等于15,即1111 |
>>> | 零填充右移,左操作数的值向右移动右操作数指定的位数,并且移位后的值用零填充。 | A >>> 2 将等于15,即0000 1111 |
逻辑运算符
下表列出了逻辑运算符,假设变量A为真,变量B为假,则:
运算符 | 描述 | 例子 |
---|---|---|
&& | 逻辑与,如果两个操作数都为真,则结果为真,否则为假。 | (A && B)为假 |
|| | 逻辑或,如果两个操作数中的任何一个为真,则结果为真。 | (A || B)为真 |
! | 逻辑非,用于反转其操作数的逻辑状态,即如果条件为真,则结果为假。 | !B 为真 |
赋值运算符
以下是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 = C % A |
<<= | 左移赋值运算符。 | C <<= 2 等价于 C = C << 2 |
>>= | 右移赋值运算符。 | C >>= 2 等价于 C = C >> 2 |
&= | 按位与赋值运算符。 | C&= 2 等价于 C = C&2 |
^= | 按位异或赋值运算符。 | C ^= 2 等价于 C = C ^ 2 |
|= | 按位或赋值运算符。 | C |= 2 等价于 C = C | 2 |
杂项运算符
Java语言支持的其他运算符很少。
条件运算符(?:)
条件运算符也称为三元运算符,该运算符由三个操作数组成,作用是确定应将哪个值分配给变量。
运算符写为:
variable x = expr1 ? expr2 : expr3
运算规则:如果expr1的值为真,则将expr2的值赋给x,否则将expr3的值赋给x。
以下是一个例子:
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)
如果左操作数是右操作数的实例,则结果为真,以下是一个例子:
public class Test { public static void main(String args[]) { String name = "James"; // 结果为真,因为name是String的实例 boolean result = name instanceof String; System.out.println( result ); } }
这将产生以下结果:
true
如果要比较的对象与右侧类型兼容,则此运算符仍将返回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运算符的优先级
运算符优先级确定表达式中术语的分组,优先级较高的运算符将首先被运算。
注意:为保证代码可读性,要用括号确保想要的优先级。
下表列出了运算符的优先级,从高到低展示。
分类 | 运算符 | 结合方向 |
---|---|---|
后缀 | expression++ expression-- | 左到右 |
一元 | ++expression --expression +expression -expression ~ ! | 右到左 |
乘除 | * / % | 左到右 |
加减 | + - | 左到右 |
移位 | << >> >>> | 左到右 |
大小 | <> | 左到右 |
等于 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | || | 左到右 |
条件 | ?: | 右到左 |
赋值 | = += -= *= /= %= ^= |= <<= >>= >>>= | 右到左 |
接下来是什么?
下一章将解释Java编程中的循环控制,描述各种类型的循环,以及如何在Java程序开发中使用这些循环以及它们的用途。