概述:
用来进行数据运算各种符号
罗列:
- 算术运算符
- 自增自减运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位移运算符
- 三元运算符
算术运算符
- 分类:+ - * / %
- 说明:
+:加运算符
(1)进行数值加法运算
(2)进行字符串的拼接
(3)可以用来表示正数
-:减运算符
(1)进行数值的减法运算
(2)可以用来表示负数
*:乘运算符
(1)用来进行数值的乘法运算
/:除运算符 取商运算符
(1)两个整数相除,不管是否能整除。都只取商,不取余数
(2)如果有一个数是小数,结果还是一个小数
%:取余运算符 取模运算符
(1)获取两个数相除的余数
(2)余数的正负,只跟前面的被除数正负有关,前面数是正数,结果就是正数,反之就是负数
class Demo01 {
public static void main(String[] args) {
System.out.println(10 / 3);//3
System.out.println(9 / 3);//3
System.out.println(10 % 3);//1
System.out.println(9 % 3);//0
System.out.println(-10 % 3);// -1
System.out.println(10 % 3);// 1
System.out.println(10 % -3);// 1
System.out.println(-10 % -3);// -1
}
}
自增自减运算符
- 分类:
+ + − − ++ -- ++−− - 作用:
+ + ++ ++:可以在某一个变量的值的基础上 + 1 + 1 +1
− − -- −−:可以在某一个变量的值的基础上 − 1 -1 −1
3、特点:
(1)如果将变量的 + + ++ ++或者 − − -- −−,单独作为一句定义。可以将 + + ++ ++或者 − − -- −−放在变量的前面或者后面,都是自增1或者自减1。
(2)如果变量的 + + ++ ++或者 − − -- −−不是单独作为一句定义。
将 + + ++ ++或者 − − -- −−放在变量的后面,是先取值,后运算
将 + + ++ ++或者 − − -- −−放在变量的前面,是先运算,后取值
class Demo02 {
public static void main(String[] args) {
//不管将++放在变量前还是后,都是+1
int i = 10;
//i++;
++i;
System.out.println(i);//11
//不管将--放在变量前还是后,都是-1
int j = 10;
//j--;
--j;
System.out.println(j);//9
//将++或者--放在变量后面,先取值后运算
int k = 10;
System.out.println(k++);//10
System.out.println(k);//11
int g = 10;
System.out.println(g--);//10
System.out.println(g);//9
//将++或者--放在变量的前面,先运算后取运算后的值
int a = 10;
System.out.println(++a);//11
System.out.println(a);//11
int b = 10;
System.out.println(--b);//9
System.out.println(b);//9
}
}
赋值运算符
- 分类:
基础的赋值运算符:=
将右边的数据,赋给左边的变量
扩展的赋值运算符:
+=, -= , *= , /= ,%=
特点:先将符号左右两边的数据进行对应的运算,将运算后的结果再赋值
class Demo03 {
public static void main(String[] args) {
int i = 10;
i += 10;//i = i + 10;
System.out.println(i);//20
i -= 10;//i = i - 10
System.out.println(i);//10
i *= 10;//i = i * 10
System.out.println(i);//100
i /= 10;//i = i / 10
System.out.println(i);//10
i %= 10;//i = i % 10
System.out.println(i);//0
}
}
比较运算符
- 分类:
基础的比较运算符
> , > = , < , < = > , >= , < , <= >,>=,<,<=
注意:只能进行数值之间的比较:整数 小数 字符
扩展的比较运算符:
= = , ! = == , != ==,!=
= = == ==:比较数据之间是否相等,相等为真不等为假
! = != !=:比较两个数据之间是否是不一样,一样为假,不一样为真
注意:数值之间可以比较、字符串之间可以比较、布尔之间可以比较。
不能数值、字符串、布尔混合比较 - 总结:
以上运算符比较的结果肯定是一个布尔类型的值
class Demo04 {
public static void main(String[] args) {
System.out.println(10 > 10);//false
System.out.println(10 >= 10);//true
System.out.println(10 < 10);//false
System.out.println(10 <= 10);//true
System.out.println(10 > 9.999);//true
System.out.println(10 > 'a');//false
System.out.println('a' < 'c');//true
//不能拿数值类型和布尔类型比较大小
//System.out.println(10 > true);
//System.out.println(10 <= false);
//不能拿数值类型和字符串类型比较大小
//System.out.println(10 > "你好");
//System.out.println('a' > "下午好");
//布尔类型和字符串类型不能比较大小
//System.out.println(true > false);
//System.out.println("你好" < "我不好");
}
}
逻辑运算符
- 分类:
& , | , !, && , || - &:逻辑与
符号两边的表达式结果都为真,最终结果为真
符号两边的表达式有一个结果为假,最终结果为假
特点:
如果前面的表达式结果不管是真是假,后面的都会执行 - |:逻辑或
符号两边的表达式结果有一个为真,最终结果就为真
符号两边的表达式结果全都为假,最终结果就为假
特点:
不管前面的表达式是真是假,后面的都会执行 - !:逻辑非
取反:结果为真,取假;结果为假,取真 - &&:逻辑短路与
比较的方式和&一模一样
特点:
如果前面的表达式结果为假,后面的表达式不会执行 - ||:逻辑短路或:
比较方式和|一模一样
特点:
如果前面的表达式结果为真,后面的表达式就不会执行
class Demo05 {
public static void main(String[] args) {
//前面表达式不管真假,后面表达式都会执行
int i = 10;
boolean boo2 = (100 < 10) & (++i>10);
System.out.println(boo2);//false
System.out.println(i);//11
//前面表达式为假,后面的表达式不会执行
int j = 10;
boolean boo3 = (100 < 10) && (++j>10);
System.out.println(boo3);//false
System.out.println(j);//10
//前面表达式不管真假,后面的表达式都会执行
int k = 10;
boolean b4 = (100 == 100) | (k++>10);
System.out.println(b4);//true
System.out.println(k);//11
//前面表达式为真,后面的表达式不会执行
int g = 10;
boolean b5 = (100 == 100) || (g++>10);
System.out.println(b5);//true
System.out.println(g);//10
}
}
位移运算符
- 分类:
<< >> >>> - 说明:
< < << <<:左移运算符
数据向左移动一位,扩大2倍;移动两位,扩大4倍…
> > >> >>:右移运算符
数据向右移动一位,缩小2倍;移动两位,缩小4倍…
> > > >>> >>>:无符号右移运算符
数据向右移动一位,缩小2倍;移动两位,缩小4倍…
特点:只能操作正数,不能操作负数 - 总结:
使用位移运算符和使用 ∗ 2 , / 2 *2 , /2 ∗2,/2
结果上没有区别,使用位移运算符效率高
三元运算符
- 元:表达式或者数据
- 三元运算符:可以操作三个表达式或者三个数据的符号
- 格式:
表达式1 ?表达式2:表达式3; - 说明:
(1)表达式1,必须是一个布尔表达式:运算的结果要么为真,要么为假
(2)表达式2和表达式3可以是任何操作 - 执行的顺序:
(1)先执行表达式1,结果要么为真,要么为假
(2)如果表达式1的结果为真,执行表达式2,以表达式2的结果为整个表达式的最 终结果。
(3)如果表达式1的结果为假,执行表达式3,以表达式3的结果为整个表达式的最终结果。
class Demo06 {
public static void main(String[] args) {
int x = 100;
int y = 20;
int max;
//先执行x > y 这个布尔表达式
//如果为真,取x
//如果为假,取y
max = x > y ? x : y;
System.out.println("最大值为:" + max);
//定义三个变量,求出三个变量之间的最大值
int a = 100;
int b = 20;
int c = 30;
int maxabc = (a > b ? a : b) > c ? (a > b ? a : b) : c;
System.out.println("最大值为:" + maxabc);
}
}