基础知识02-运算符
常见运算符
| 优先级 | 运算符分类 | 结合顺序 | 运算符 |
|
由
高
到 低 |
分隔符 |
左结合 |
. [] ( ) ; , |
| 一元运算符 | 右结合 | ! ++ -- - ~ | |
| 算术运算符 移位运算符 | 左结合 | * / % + - << >> >>> | |
| 关系运算符 | 左结合 | < > <= >= instanceof(Java 特有) = = != | |
| 逻辑运算符 | 左结合 | ! && || ~ & | ^ | |
| 三目运算符 | 右结合 | 布尔表达式?表达式1:表达式2 | |
| 赋值运算符 | 右结合 | = *= /= %= += -= <<= >>= >>>= &= *= |= |
位移运算符
| 运算符 | 含义 | |
|---|---|---|
| << | 左移运算符,将左边的对象想做移动运算符右边指定的位数 | |
| >> | 右移运算符,将右边的对象向位移运算符右边指定的位数。使用符号扩展机制,如果值为正,则高位补0,如果为负,则高位补1 | |
| >>> | 无符号位移运算符,也即是,无论对象是正是负,都是向高位增加0 |
System.out.println(Integer.toBinaryString(15));
System.out.println(Integer.toBinaryString(15<<2));
System.out.println(Integer.toBinaryString(15>>2));
System.out.println(Integer.toBinaryString(-15));
System.out.println(Integer.toBinaryString(-15>>2));
System.out.println(Integer.toBinaryString(-15>>>2));
00000000 00000000 00000000 00001111
00000000 00000000 00000000 00111100
00000000 00000000 00000000 00000011
11111111 11111111 11111111 11110001
11111111 11111111 11111111 11111100
00111111 11111111 11111111 11111100
逻辑运算符
位运算符是对二进制位进行的相关操作
| 位运算符 | 含义 |
|---|---|
| ! | 取非运算 |
| & | 与位运算 |
| 竖线 | 或运算符 |
| ^ | 异或运算符 |
异或运算符
| A | B | A^B |
|---|---|---|
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
int a = 15;
int b = 2;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(a^b));
System.out.println(Integer.toBinaryString(~a));
1111
1101
11111111 11111111 11111111 11110000

浙公网安备 33010602011771号