Java运算符
1 基本介绍
Java中的运算符可分为:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符和条件运算符。
2 算数运算符
算数运算符包括加(+)、减(-)、乘(*)、除(/)、取余(%),这几个基础的我就不介绍了,说一下这两个++
和--
。
这两种运算符都前缀和后缀两种形式,例如:a++
和++a
,b--
和--b
。前缀形式(++a
)是先运算再赋值,后缀形式(a++
)是先赋值再运算,代码演示一下区别。
public static void main(String[] args) {
int a = 1;
int b = a++;//先把a的赋值给b,然后再对a自增1,所以a=2,b=1
System.out.println("a:" + a);
System.out.println("b:" + b);
System.out.println("======================");
int c = ++a;//先对a进行自增1,然后再赋值给c,所以a=3,c=3
System.out.println("a:" + a);
System.out.println("c:" + c);
}
运行结果如下:
a--
和--a
的情况和++类似。
3 关系运算符
关系运算符:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=),这些都很好理解,比较简单。
4 逻辑运算符
逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!)。
逻辑与(&&):表达式中只要有false结果就是false,只有全是true的时候结果才是true。
true && true = true;
true && false = false;
false && true = false;
false && false = false;
逻辑或(||):表达式中只要有true结果就是true,只有全是false的时候结果才是false。
true || true = true;
true || false = true;
false || true = true;
false || false = false;
逻辑非(!):与表达式中的结果相反。
!true = false;
!false = true;
5 位运算符
位运算符是对二进制位进行操作的,包括按位与(&)、按位或(|)、按位取反(~)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)。位运算符只能对整数型和字符型数据进行操作。
按位与(&):同为同时为1,结果才为1,否则就是0,即0&0=0; 0&1=0; 1&0=0; 1&1=1;
例如:5&3 即 0000 0101 & 0000 0011 = 0000 0001; 因此值为1。
按位或(|):同为同时为0,结果才为0,否则就是1,即0|0=0; 0|1=1; 1|0=1; 1|1=1;
例如:5|3 即 0000 0101 | 0000 0011 = 0000 0111; 因此值为7。
按位取反(~):对二进制数按位取反,将0变1,1变0,即~1=0; ~0=1;
异或(^):参加运算的二进制数,如果相同则为0,不同则为1,即0^0=0; 0^1=1; 1^0=1; 1^1=0;
例如:5^3 即0000 0101 ^ 0000 0011 = 0000 0110; 因此值为6。
右移(>>)和左移(<<):这两个是带符号移动的,左移n位就相当于乘以2的n次方,右移n为相当于除以2的n次方后的整数。左移n为则后面补n个0(正数补0,负数补1),右移n位则去掉末尾n位然后右移前面补0(正数补0,负数补1)。
无符号右移(>>>):无符号右移 与 右移 是一样的,只是无符号右移前面默认补0,而右移则需要看是正数还是负数,整数的首位是0则补0,而负数的首位是1则补1。
6 赋值运算符
赋值运算符主要就是=,很好理解。有一些特殊的赋值运算符,例如a += 123;
,即a = a + 123;
还有-=、*=、/=、%=、&=、|=等等,计算规则都是类似的。
7 条件运算符
条件运算符就是三目运算符,也称三元运算符。
语法表达式:布尔表达式 ? 表达式1 : 表达式2
运算规则:如果布尔表达式的值为true则返回表达式1的结果,否则返回表达式2的结果。
8 运算符的优先级
优先级按从高到低排序:
优先级 | 描述 | 运算符 |
---|---|---|
1 | 括号 | () [] |
2 | 正负号 | + - |
3 | 自增,自减,非 | ++ – ! |
4 | 乘除,取余 | * / % |
5 | 加减 | + - |
6 | 移位运算 | << >> >>> |
7 | 大小关系 | > >= < <= |
8 | 相等关系 | == != |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | | |
12 | 逻辑与 | && |
13 | 逻辑或 | || |
14 | 条件运算 | ?: |
15 | 赋值运算 | = += -= *= /= %= |
16 | 位赋值运算 | &= |= <<= >>= >>>= |