一、简介
运算符是一种用于表示数据的运算、赋值和比较等的特殊符号,包括算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和三元运算符。
二、运算符介绍
1)算术运算符
算术运算符包括正号(+)、负号(-)、加(+)、减(-)、乘(*)、除(/)、取模或取余(%)、自增(前或后)++、自减(前或后)–等。
注意:
- 取模操作的结果符号取决于被模数,与模数无关,且取模的结果不一定总是整数。
System.out.println(5%2); // 1
System.out.println(-5%2); // -1
System.out.println(-5.1%2); // -1.0999999999999996
- 对于除法运算,如果整数之间的除法运算,则结果必为整数。
System.out.println(5%2); // 1
2)赋值运算符
赋值运算符为=。
- 当赋值运算符=两侧的数据类型不一致时,可以使用自动类型转换或强制类型转换进行处理;
- 支持连续赋值。
- 扩展的赋值运算符:+=、-=、*=、/=、%=
注:
//
short s1 = 10;
//s1 = s1 + 10; // 会编译失败,类型自动提升为int
s1 += 10; // 可编译成功,+=不会改变变量的数据类型,
3)比较运算符
比较运算符包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。
注意:
- 比较运算符的结果都是布尔类型,即true或false。
4)逻辑运算符
逻辑运算符包括逻辑与(&)、逻辑或(|)、逻辑异或(^)、逻辑非(!)、短路与(&&)、短路或(||)。
注意:
- 逻辑运算符用于操作布尔类型表达式
- 逻辑与(&)和短路与(&&)的区别:
A&B 在计算时,无论A表达式为真或为假,B表达式都会进行运算;
A&&B 在计算时,如果A表达式为真,则会计算表达式B,否则不会计算表达式B。 - 逻辑或(|)和短路或(||)的区别:
A|B 在计算时,无论A表达式为真或为假,B表达式都会进行运算;
A||B 在计算时,如果A表达式为真,则会计算表达式B,否则不会计算表达式B。 - 逻辑非(!)
!A 在计算时,若A为真,则!A为假;若A为假,则!A为真; - 逻辑异或(^)
A^B 在计算式,当A=B时结果为false;当A!=B时,结果为true;
5)位运算符
位运算符包括左移(<<)、右移(>>)、无符号右移(>>>)、与(&)、或(|)、异或(^)、取反(~)。
注意: 位运算符是对整数进行的二进制运算。
如:
- 左移
21<<2 , 21 左移 2 位,左边两位(高位)溢出,右边空缺补0,结果为84。 - 右移
21>>2,21 右移 2位,右边两位(高位)溢出,左边空缺补0,结果位5。 - 无符号右移
被移位二进制最高位无论是0或1,空缺位都用0补。 - &
二进制位的&运算,只有1&1时结果为1,否则为0 - |
二进制位的|运算,只有0|0时结果为0,否则为1 - ^
二进制的异或运算,只有当围巾职位不同时运算结果为1 - 取反~
取反操作是各二进制码按补码对各位取反
6)三元运算符
三元运算符,也称为三目运算符,即有三个操作数的运算符。
格式为: (条件表达式) ? 表达式1 : 表达式2
- 计算条件表达式的值result,结果为true或false;
- 如果result为true,则计算后的结果为表达式1的值;
- 如果result为false,则计算后的记过为表达式2的值;
- 表达式1和表达式2的值为相同类型;
三、运算符的优先级