计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:
- 算术运算符
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
操作符 | 描述 |
---|---|
+ | 加法 - 相加运算符两侧的值 |
- | 减法 - 左操作数减去右操作数 |
* | 乘法 - 左操作数减去右操作数 |
/ | 除法 - 左操作数除以右操作数 |
% | 取模 - 左操作数除右操作数的余数 |
++ | 自增 - 操作数的值增加1 |
-- | 自减 - 操作数的值减少1 |
算术运算符案例:
int a = 100;
int b = 5;
int sum;
//加法运算
sum = a + b;
System.out.println("加法运算:" + sum);
//减法运算
sum = a - b;
System.out.println("减法运算:" + sum);
//乘法运算
sum = a * b;
System.out.println("乘法运算:" + sum);
//除法运算
sum = a / b;
System.out.println("除法运算:" + sum);
//取模运算sum = a % b;
System.out.println("取模运算:" + sum);
//自增运算sum = a ++;
System.out.println("自增运算:" + sum);
//自减运算sum = -- b;
System.out.println("自减运算:" + sum);
关系运算符
运算符 | 描述 |
---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |
关系运算符例子
if(a == b){
System.out.println("a == b : " + (a == b));
}else {
System.out.println("a != b : " + (a != b));
}
if (a > b){
System.out.println("a > b : " + (a > b));
}else {
System.out.println("a < b : " + (a < b));
}
if (a >= b){
System.out.println("a >= b : " + (a >= b));
}else {
System.out.println("a <= b" + (a <= b));
}
位运算符
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。
操作符 | 描述 |
---|---|
& | 按位与操作符,当且仅当两个操作数的某一位都非0时候结果的该位才为1。 |
| | 按位或操作符,只要两个操作数的某一位有一个非0时候结果的该位就为1。 |
^ | 按位异或操作符,两个操作数的某一位不相同时候结果的该位就为1。 |
~ | 按位补运算符翻转操作数的每一位。 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
位运算案例:
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
逻辑运算符
操作符 | 描述 |
---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 |
|| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 |
逻辑运算案例:
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
赋值运算符
操作符 | 描述 |
---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 |
+= | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
-= | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
*= | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
/= | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
%= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
<<= | 左移位赋值运算符 |
>>= | 右移位赋值运算符 |
&= | 按位与赋值运算符 |
^= | 按位异或赋值操作符 |
|= | 按位或赋值操作符 |
条件运算符
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
条件运算符案例
//条件运算符
sum = a > b ? a : b;
System.out.println(sum);
instanceOf 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
instanceof运算符使用格式如下:
( Object reference variable ) instanceOf (class/interface type)
案例:
String name = "小明";
Boolean flay = name instanceof String;
System.out.println(flay);
Java运算符优先级
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] .(点操作符) | 左到右 |
乘性 | * / % | 从右到左 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >>= <<= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | || | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %= >>= <<= &= ^= |= | 从右到左 |
逗号 | , | 左到右 |