三、运算符
1、什么是运算符
对操作数进行操作时的符号。
2、算术运算符
2.1基本四则运算符:+ - * / %
int a =10;
int b =20;
System.out.println(a+b);//加 30
System.out.println(a-b);//减 -10
System.out.println(a*b);//乘 200
System.out.println(a/b);//除 0
System.out.println(a%b);//去摸 10 -->相当于除法的余数
注意:
- 都是二元运算符,使用时必须要有左右两个操作数。
- int / int结果还是 int 类型,向下取整,小数点后舍掉。
- 做除法和取模时,右操作数不能为0。
- % 还可以对 double类型取模,但没有意义。
- 两侧操作数类型不一致时,向类型大的提升。(类型自动转换)
2.2增量运算符:+= -= *= /= %=
//操作完成后,结果赋值给做操作符
int a =1;
a +=2;// a = a+2
a -=1;// a = a-1
a *=3;// a = a*3
a /=3;// a = a/3
a %=3;// a = a%3
- 变量才能使用该运算符,常量不能使用。
2.3 自增/自减运算符
int a =1;
a++;//后置++ a+1
System.out.println(a++);// 控制显示 2 ,a=3;先使用在 +1
++a;//前置++ a+1
System.out.println(++a); // 5, a=5;先 +1 在使用
// -- 同理
//-1
注意:
- 单独使用,前置++(- -) 和 后置++(- -) 没有区别。
- 混合使用,前置++(- -)先+(-)1,在使用;后置++(- -)先使用,在+(-)1。
- 只用变量才能使用,常量不允许。
3、关系运算符
// 主要有六个: ==、!=、<、>、<=、>=
// 计算结果是 true 和 false。
int a =10;
int b =20;
//在 Java中 = 表示赋值,
// == 表示相等
System.out.println(a==b);//false
System.out.println(a!=b);//true
System.out.println(a<b);//true
System.out.println(a>b);//false
System.out.println(a<=b);//true
System.out.println(a>=b);//false
- 需要多次判断时,不能连着写。如:3<a<5,在Java程序中时错误的。
4、逻辑运算符
逻辑运算符主要有三个:&&、||、!,返回结果时boolean类型。
4.1逻辑与 &&
表达式1 | 表达式2 | 结果 |
---|---|---|
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
int a =1;
int b =2;
System.out.println(a==1 && b==2);//左真 右真,则真
System.out.println(a==1 && b>100);//左真 右假,则假
System.out.println(a>100 && b==2);//左假 右真,则假
System.out.println(a>100 && b>100);//左假 右假,则假
4.2逻辑或 ||
表达式1 | 表达式2 | 结果 |
---|---|---|
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
int a =1;
int b =2;
System.out.println(a==1 || b>100);//左真 右假,则真
System.out.println(a>100 || b==2);//左假 右真,则真
System.out.println(a>100 && b>100);//左假 右假,则
System.out.println(a==1 || b==2);//左真 右真,则真
4.3逻辑非 !
表达式 | |
---|---|
真 | 假 |
假 | 真 |
int a =1;
System.out.println(!(a==1));// false
System.out.println(!(a==2));//true
4.4 短路求值
&& 和 || 遵守短路求值规则
- &&,左侧表达式值为 false,则表达式结果一定是 false,无需计算右侧表达式。
- ||,左侧表达式值为 true,则表达式结果一定是 true,无需计算右侧表达式。
- & 和 | 表达式结果为 boolean时,也表示逻辑运算,但不支持短路。
5、位运算
Java 中数据存储的最小单位时字节,而数据操作的最小单位时比特位,字节是最小的存储单位,每个字节是由8个二进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。
-
位运算符主要有四个:& | ~ ^,除 ~ 是一元运算符外,其余都是二元运算符。
-
位操作表示 按二进制位运算,计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制的每一位依次进行计算。
-
注意:当 & 和 | 的操作数为整数(int,short,long,byte)的时候,表示按位运算,当操作数为 boolen 的时候,表示逻辑运算。
5.1 按位与 &
- 两个二进制位都是 1,则结果为1,否则为零
int a =10;
int b =20;
System.out.println(a & b);//0
5.2 按位或 |
- 两个二进制位都是 0,则结果为0,否则为1
int a =10;
int b =20;
System.out.println(a & b);//30
5.3按位取反 ~
- 该为 0,则为1;为1,则0
int a = 0Xf;
System.out.println(~a);//-16
6、移位运算
- 以为运算符有三个:<<、>>、>>>,都是二元运算符,且都是按照二进制与比特位来运算的。
- 左移<<:左测为不要了,右侧补0
注意:向左移位时,丢弃的时符号位,因此正数左移可以会变成负数。
- 右移>>:右侧为不要了,左侧补(整数补0,负数1)
- 无符号右移>>>:最右侧位不要了,左侧补0
7、条件运算符
表达式1 ?表达式2:表达式3
- 表达式1的值为 true 时,整个表达式的值为,表达式2
- 表达式1的值为 false 时,整个表达式的值为,表达式3
8、运算符的优先级
在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同。
- 运算符之间是有优先级的. 具体的规则不必 [刻意] 记忆。 在可能存在歧义的代码中加上括号即可。