Java 学习之路——运算符
算数运算符
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模(取余) | 7%5 | 2 |
++ | 自增(后):先取值后运算 | a=2;b=a++ | a=2,b=3 |
-- | 自减(前):先运算后取值 | a=2;b=--a | a=1,b=1 |
-- | 自减(后):先取值后运算 | a=2;b=a-- | a=1,b=2 |
+ | 字符串连接 | "He"+"llo" | "Hello" |
- 取模运算:结果的符号与被模数的符号相同。
- 自增 1 不会改变本身变量的数据类型。
赋值运算符
- 符号:=
- 当 “ = ” 两侧数据不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
- 支持连续赋值。
int i2,j2; i2 = j2 = 10; int i3 = 10,j3 = 20;
- 扩展赋值运算符:**+=、-=、*=、/=、%= **。
比较运算符
运算符 | 运算 | 范例 | 结果 |
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
大于 | 4>3 | true | |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | |
instanceof | 检查是否是类的对象 | "Hello" instanceof String | true |
- 比较运算符的结果都是 Boolean 型,也就是要么是 true,要么是 false 。
- 比较运算符 “ == ” 不能误写成 “ = ” 。
逻辑运算符
运算符 | 运算 |
& | 逻辑与 |
&& | 短路与 |
| | 逻辑或 |
|| | 短路或 |
! | 逻辑非 |
逻辑异或 |
- 逻辑运算符操作的都是 Boolean 类型的变量。
位运算符
运算符 | 运算 | 范例 | 细节 |
<< | 左移 | 3 << 2 = 12 --> 3 * 2 * 2 = 12 | 空位补 0 ,被移除的高位丢弃,空缺位补 0 。 |
>> | 无符号右移 | 3 >>> 1 = 1 --> 3 / 2 = 1 | 被移位二进制最高位无论是 0 或者是 1 ,空缺位都用 0 补。 |
& | 与运算 | 6 & 3 = 2 | 二进制进行 & 运算,只有 1 & 1 时结果为 1 ,否则是 0 。 |
| | 异或运算 | 6 ^ 3 = 5 | 相同二进制位进行 ^ 运算,结果是 0 ;1 ^ 1 = 0,0 ^ 0 = 0 。 不相同二进制位 ^ 运算结果是 1 。1 ^ 0 = 1,0 ^ 1 = 1 。 |
~ | 取反运算 | ~6 = -7 | 整数取反,各二进制码按补码各位取反。 负数取反,各二进制码按补码各位取反。 |
- 位运算符是直接对整数的二进制进行的运算。
三元运算符
- 格式:
- (条件表达式):表达式 1?表达式 2;
public class Testm { public static void main(String[] args) { int m = 12; int n = 5; // 三元运算符是可以嵌套使用的。 int max = (m > n)?"m大" : ((m == n)?"m和n相等" : "n大"); System.out.println(max) } }
- 条件表达式的结果为 Boolean 类型。
- 条件表达式为 true 时,运算后的结果是表达式 1 。
- 条件表达式为 false 时,运算后的结果是表达式 2 。
- 表达式 1 和表达式 2 为同种类型。
- 三元运算符和 if-else 的联系与区别:
- 三元运算符可简化 if-else 语句。
- 三元运算符要求必须返回一个结果。
- if 后的代码块可有多个语句。
2.三元运算符与 if-else 的转换:
- 凡是可以使用三元运算符的地方,都可以改写为 if-else 。反之不成立。
运算符的优先级
- 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。
运算方向 | 符号 | 优先级 |
. () {} ; , | 高 | |
R --> L | ++ -- ~ !(data type) | | |
L --> R |
* / % | | |
L --> R | + - | | |
L --> R | < > <= >= instanceof | | |
L --> R | == != | | |
L --> R | & | | |
L --> R | | | |
L --> R | | | | |
L --> R | && | | |
L --> R | || | | |
R --> L | ? : | | |
R --> L | = *= /= %= | | |
+= -= <<= >>= | v | |
>>>= &= ^= |= | 低 |
2.只有单目运算符、三元运算符、赋值运算符是从右向左运算的。