运算符
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,
符号首先和运算符右侧的内容结合。
-
注意区分正负号和加减号,以及按位与和逻辑与的区别
网友评论