1.简述
就是对常量和变量操作的符号
2.分类
2.1、算术运算符
+(加),-(减),*(乘),/(除),%(取模:取余数),++(加加),--(减减)
- +号在Java中有三种作用,代表正号,做加法运算,字符串的连接符
- 整数相除只能得到整数,如果想得到小数,必须把数据变化成浮点数类型
- /号获取的是除法操作的商,%号获取的除法操作的余数
- %运算符
当左边的绝对值小于右边绝对值时,结果是左边
当左边的绝对值等于右边或者是右边的倍数时,结果是0
当左边的绝对值大于右边的绝对值时,结果是余数
%运算符结果的符号之和左边有关系,与右边无关
任何一个正整数%2结果不是0就是1,可以用来当做切换条件
2.2、赋值运算符
基本的赋值运算符:=
int a = 2;
把右边的数据赋值给左边
扩展的赋值运算符:+=(加等)、-=(减等)、*=(乘等)、/=(除等)
+=:把左边和右边做加法,然后赋值给左边
面试题:看下面的程序是否有问题,如果有问题,请指出说明理由
public static void main(String[] args) {
short s = 1;
s = s + 2; //报错,当short与int进行混合运算时,会提升为int类型,两个int相加的结果是int,赋值给byte会损失精度
s += 2; //底层会默认自动强转:s = (short)(s+2);
}
2.3、比较(关系或条件)运算符
==(等等于)、!=(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)
注意事项:无论操作是简单还是复杂,结果都是boolean类型
2.4、逻辑运算符
&(逻辑与)、|(逻辑或)、^(逻辑异或)、!(逻辑非,开发常用)、&&(短路与,开发常用)、||(短路或,开发常用)
注意事项:
- 逻辑运算符一般用于链接boolean类型的表达式或者值
结论:
- &逻辑与:有false则false,“并且and”的意思
- |逻辑或:有true则true。“或者or”的意思
- ^逻辑异或:相同为false,不用为true
- !逻辑非:非false则true,非true则false,“取反”的意思
偶数个不改变本身,即非非为真。
2.5、位运算符
&(位与)、|(位或)、^(位异或)、~(取反)、>>(右移)、>>>(无符号右移)、<<(左移)
基本用法:操作的是二进制数
- &:有0则0;
- | :有1则1;
- ^:相同为0,不同为1;
注:一个数对另外一个数位异或两次,结果还是这个数,可用于加密
- ~:按位取反,0变1,1变0
- <<:左移,左边最高位丢弃,右边补齐0
向左移动几位就是乘以2的几次幂。例如:12<<1=24;12<<2=48。可通过补码验证
面试题:最有效率的计算出 2 * 8 的结果:2<<3=2*2^3=8
- >>:右移,最高位是0,左边补齐0,最高位是1,左边补齐1
向右移动几位就是除以2的几次幂。例如:12>>1=6;12>>2=3。可通过补码验证
- >>>:无符号右移,无论高位是0还是1,左边补齐0
2.6、三元(目)运算符
格式:
(关系表达式) ? 表达式1 :表达式1;
执行流程:
例:z = (x > y) ? x : y;
- 先判断表达式,为true或者false
- 为true则 z = x;为false则 z = y;