1.什么是运算符
运算符:对操作数进行操作的符号(包括算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符、条件运算符)
表达式:变量和运算符一起组成了表达式
2.算数运算符
2.1基本四则运算符
+、-、*、/、%
//除:/
public static void main(String[] args) {
System.out.println(5/2);//2
System.out.println(5/(float)2);//2.5
System.out.println((float)5/2);//2.5
System.out.println((float)(5/2));//2.0
}
//模:%
public static void main(String[] args) {
System.out.println(10%3);//1
System.out.println(10%-3);//1
System.out.println(-10%3);//-1
System.out.println(-10%-3);//-1
System.out.println(11.5%10);//1.5
}
①除法和取模是,除数都不可以为0
②结果为NaN时表示未定义的
③%对double也是可以适用的
④当两侧的操作数类型不一样时,会向类型大的提升
2.2增量运算符
+=、/=、%=、-=、*=
public static void main(String[] args) {
short a = 10;
//a = a+20;报错
a += 20;//这里帮助我们自动的类型转化(将int转化为short)
System.out.println(a);
}
2.3自增/自减运算符
++ –
public static void main(String[] args) {
int a = 10;
int b = a++;
int c = ++a;
System.out.println(b);//10
System.out.println(c);//12
}
前置++:先使用再++
后置++:先++再使用
3.关系运算符
关系运算符(==、!=、<、>、<=、>=)的结果只能是true或者false(布尔表达式)
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a == b);//false
System.out.println(a != b);//true
}
4.逻辑运算符
1.逻辑与&&(同真为真)
语法:表达式1&&表达式2(如果表达式1为假的话就不执行表达式2了)
2.逻辑或||(同假为假)
语法:表达式1||表达式2(如果表达式1为真的话就不执行表达式2了)
3.逻辑非!(真变假,假变真)
语法:!表达式
4.短路求值
&&和||符合短路求知的规则
public static void main(String[] args) {
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
//System.out.println(10 > 20 & 10 / 0 == 0); // 报错 &不支持短路
//System.out.println(10 < 20 | 10 / 0 == 0); // 报错 |不支持短路
}
5.位运算符
1.按位与(&)
只有对应位上都是1的时候才是1
2.按位或(|)
只有对应位上都是0的时候才是0,其他时候都是1
3.按位异或(^)
对应位上相同为0,不同为1
4.按位取反(~)
该为上为0则转化为1,为1时转化为0
6.位移运算
1.左移<<:最左侧不要了,最右侧补0(相当于原数字*2的移动次数的次方)
2.右移>>:最右侧不要了,最左侧补符号位,符号位是1就补1,是0就补0(相当于原数字/2的移动次数的次方)
3.无符号右移>>>:最右侧不要了,最左侧补0,
注意:没有无符号左移
7.条件运算符
语法:表达式1?表达式2:表达式3
注意:
①表达式1 一定是一个布尔表达式
②表达式不能单独存在
③表达式1 是true则执行表达式2,否则执行表达式3
public static void main(String[] args) {
boolean flg = true ? true == true ? false : true : true;
System.out.println(flg);//false
}
public static void main(String[] args) {
int a = 10;
int b = 20;
//a > b ? a : b;//错误,表达式不能单独存在
int c = a > b ? a : b;
System.out.println(c);//20
}
8.运算符的优先级
不必管,也不必记,在代码中多加括号就可