运算符
java提供丰富运算符,大概分为算术数运算符,关系运算符,位运算符,逻辑运算符,赋值运算符
算术运算符
该运算符就在数学上的应用一样
| 操作符 | 描述 | 例子 |
|---|---|---|
| + | 加法 | A+B |
| - | 减法 | A-B |
| * | 乘法 | A*B |
| / | 除法,取商 | A/B |
| % | 取余数 | A%2 |
| ++ | 自增 | A++,++A |
| -- | 自减 | C--,--C |
注意: A++,++A的区别
例子:
int a =3;
int b = a++; //实际打印b=3
//第一次打印a=4
int c = ++a; //实际打印c=4
//第二次打印a=5
解析:
运算拆分
int a =3
int b =a++;
a = a+1 =4
b = 4;
a = 4;
++a,--a,先进行自增(自减)运算,在进行表达式运算
a++,a--,先进行表达式运算,再进行自增(自减)运算
关系运算符
| 操作符 | 描述 | 例子 |
|---|---|---|
| == | 检查两个值是否相等,是返回true,反之返回false | A==B |
| != | 检查两个值,不相等则返回true,反之返回false | A!= B |
| > | 检查左边值是否大于右边值,是的返回为true,反之返回false | A>B |
| < | 检查左边值是否小于右边值,是的话返回为true,反之返回false | A<B |
| >= | 检查左边值是否大于等于右边值,是返回为true,反之返回false | A>=B |
| <= | 检查左边值是否小于等于右边值,是返回为true,反之返回false | A<=B |
位运算符
java定义的位运算符,适用于byte,short,char,int,long等类型
位运算符在所有的位上,并且按位运算
举例:A=60,B=13,以下用二进制表示
A = 0 0 1 1 1 1 0 0
B = 0 0 0 0 1 1 0 1
A&B = 0 0 0 0 1 1 0 0
A|B = 0 0 1 1 1 1 0 1
A^B = 0 0 1 1 0 0 0 1
~A = 1 1 0 0 0 0 1 1
A<<2= 1 1 1 1 0 0 0 0
A>>2= 1 1 1 1
A>>>2=0 0 0 0 1 1 1 1
| 操作符 | 描述 | 例子 |
|---|---|---|
| & | 相对应位均为1的话,则为1,反之为0 | A&B |
| | | 相对应位均为0的话,则为0,反之为1 | A|B |
| ^ | 相对应位均相等的话,则为0,反之为1 | A^B |
| ~ | 取反运算符,1变0,0变1 | ~a |
| << 2 | 左边的值的位向左移动2位 | A<<2 |
| >>2 | 左边的值的位向右移动2位 | A>>2 |
| >>>2 | 左边的值的位向右移动2位,移动均以0补充 | A>>>2 |
逻辑运算符
| 操作符 | 描述 |
|---|---|
| && | 与运算符,两者为真,才返回true,反之false |
| | | | 或运算符,两者其一为真,即返回true,反之为false |
| ! | 非运算符,将操作值的逻辑状态反转,true变false,false变true |
赋值运算符
| 操作符 | 描述 | 例子 | |
|---|---|---|---|
| = | 将右边值赋给左边值 | C=A+B | |
| += | 将左值加上右值重新赋给左边值 | C+=A | C=C+A |
| -= | 将左值减去右值重新赋给左边值 | C-=A | C=C-A |
| *= | 将左值乘于右值重新赋给左边值 | C*=A | C=C*A |
| /= | 将左值除于右值得到商重新赋给左边值 | C/=A | C=C/A |
| %= | 将左值除于右值得到余数重新赋给左边值 | C%=A | C=C%A |
| <<= | 将左值的位向左移右操作值位数重新赋给左边值 | C<<=2 | C=C<<2 |
| >>= | 将左值的位向右移右操作值位数重新赋给左边值 | C>>=2 | C=C>>2 |
| &= | 按照按位与赋值 | C&=2 | C=C&2 |
| ^= | 按照按位异或赋值 | C^=2 | C=C^2 |
| | = | 按照按位或赋值 | C | =2 | C=C | 2 |
三目运算符
该运算符有三个操作数,并需要判断布尔型的值,来确定讲那个数赋值给变量
真返回?后面的值来赋值,反之拿:后面值来赋值
int a = 0;
int b = 3;
//这处a=20,由于3小于5,取:后的值赋值给a
int a = (b>5)?10:20
//这处a=10,由于3大于0,取?后的值赋值给a
int a = (b>0)?10:20
instanceof运算符
该运算符用于操作对象实例,检查该对象是否指定对象(类或者接口),满足则返回true,反之为false
如:
String name ="Stuart";
//此处这里是返回 true
boolean result = name instanceof String
运算符优先级
| 优先级 | 类型 | 操作符 | 关联性 |
|---|---|---|---|
| 1 | 符号 | () [] . | 从左到右 |
| 2 | 一元 | +(正) -(负) ! ~ | 从右到左 |
| 3 | 乘除 | * / % | 从左到右 |
| 4 | 加减性 | + - | 从左到右 |
| 5 | 移位 | >> >>> << | 从左到右 |
| 6 | 关系 | > >= < <= instanceof | 从左到右 |
| 7 | 相等 | == != | 从左到右 |
| 8 | 按位与 | & | 从左到右 |
| 9 | 按位异或 | ^ | 从左到右 |
| 10 | 按位或 | | | 从左到右 |
| 11 | 逻辑与 | && | 从左到右 |
| 12 | 逻辑或 | || | 从左到右 |
| 13 | 三目运算 | ?: | 从右到左 |
| 14 | 赋值 | = += -= ^= %= /= ~= >>= <<= >>>= | 从右到左 |
优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低
结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,
符号首先和运算符右侧的内容结合。注意区分正负号和加减号,以及按位与和逻辑与的区别