运算符

1 赋值运算符

运算符

名称

用法

描述

=

赋值

int a = 3 ;

将 = 右边的值 赋值给 = 左边的变量

2 算术运算符

运算符

名称

用法

结果

+


5 + 2

7

-


5-2

3

*


5*2

10

/


5/2

2

%

取余

5%2

1

3 一元运算符

运算符

用法

描述

++

(先加)++x 或x++(先用)

自增1

--

(先减)--x或x--(先用)

自减1

4 关系(比较)运算符

运算符

名称

用法

结果(Boolean值)

>

大于

2>1

true

<

小于

2<1

false

>=

大于等于

2>=1

true

<=

小于等于

2<=1

flase

==

等于

2==1

false

!=

不等于

2!=1

true

5 逻辑运算符(只能比较 boolean值,结果也为 boolean值)

运算符

名称

用法

描述 ( 结果(Boolean值) )

&&

(短路)与

条件1 && 条件2

只要两个条件有一个为假,结果为假

&


条件1 & 条件2

只要两个条件有一个为假,结果为假

||

(短路)或

条件1|| 条件2

只要两个条件有一个为真,结果为真

|


条件1| 条件2

只要两个条件有一个为真,结果为真

!


!条件

条件为真时,结果为假,反之亦然

^

异或

条件1 ^ 条件2

两个条件结果相同时为假,不同为真

解释:短路

当 条件1 && 条件2 如果条件1为false,结果明显为false,所以条件2不会再判断。

当 条件1 & 条件2 如果条件1为false,结果明显为false,但条件2语句一样会被运算。

6 位运算符(2进制运算符)

运算符

名称

用法

描述

&

按位与

00001001&00001110 -> 00001000

按位比较,只要有0,则取0

|

按位或

00001001|00001110 -> 00001111

按位比较,只要有1,则取1

^

按位异或

00001001^00001110 -> 00000111

按位比较,相同取0,不同取1

~

按位非

~00000010 -> 11111101

对位取反

<<

左移

01000011 << 2 -> 00000110

每一位向左移动2位,右边补0,超出位数范围则舍去

>>

带符号右移

11111110 >> 2 -> 11111111

每一位向右移动2位,左边补符号位,超出位数范围则舍去

>>>

无符号右移

11111110 >>> 2 -> 00111111

每一位向右移动2位,左边补0,超出位数范围则舍去

经典案例1:用最快的速度计算2的3次方; 提示:使用<<

经典案例2:int a =1;int b =2;不借助第三个变量,交换两个数的值; 提示: 使用^

7 三目(三元)运算符

运算符

名称

?


:

否则

用法:

  • zhangSanScore > 98 ? "奖励Iphone 8 " : "没有任何奖励" ;

语法解释:张三的成绩大于98吗?如果大于"奖励Iphone 8 ",否则"没有任何奖励";

8 字符串连接运算符

运算符

名称

用法

结果

+

字符串追加

String s="张三"+"是个男孩";

s -> 张三是个男孩

注:只要+的两端有一端是字符串,则这个时候+就变成了字符串连接符




9 运算符优先级

优先级

运算符

结合性

1

() [] .

从左到右

2

! +(正)  -(负) ~ ++ --

从右向左

3

* / %

从左向右

4

+(加) -(减)

从左向右

5

<< >> >>>

从左向右

6

< <= > >= instanceof

从左向右

7

==   !=

从左向右

8

&(按位与)

从左向右

9

^

从左向右

10

|

从左向右

11

&&

从左向右

12

||

从左向右

13

?:

从右向左

14

= += -= *= /= %= &= |= ^=  ~=  <<= >>=   >>>=

从右向左

注:只需要知道 () 的优先级是最高的,其他的不需要记,当运算表达式比较复杂,不能确定运算顺序的时候,可以添加括号 () 控制执行顺序。