运算符就是告诉程序执行特定运算操作的符号。熟练掌握,将有利于提高程序的阅读以及编写能力,大大提高工作效率
常用运算符
赋值运算符
“=”用于给变量指定变量值 (简单复习一下,数据类型 变量名=初始值;)
变量名=表达式,运算优先级最低
小应用:
两个变量数据交换 法一:三变量交换法
temp=a;
a=b;
b=temp;
法二:合并值交换法
temp=a+b;
b=a;
a=temp-a;
算术运算符
包括“+” “-” “*” “/” “%” “++” “--” 等
有几个很特别,简单说一下:
除法运算 : a/b 取商 a%b 取余数
a++ 做自加1运算,即发生a=a+1,a++整体为自增之前a的值
++a 做自加1运算,即发生a=a+1,++a 整体为自增之后a的值
a-- 做自减1运算,即发生a=a-1,a--整体为自减之前a的值
--a 做自减1运算,即发生a=a-1,--a整体为自减之后a的值
ps:赋值运算符可以和算术运算符结合,组成符合运算符
a+=b 等同于a=a+b
a-=b 等同于a=a-b
a*=b 等同于a=a*b
a/=b 等同于a=a/b
a%=b 等同于a=a%b
关系运算符(比较运算符)
运算结果是布尔值true或false
比较特殊的有:== 等于 (与赋值运算符 = 做区分 )
!= 不等于
以上支持所有数据类型的比较,包括数值类型、布尔类型、引用类型
逻辑运算符
! 逻辑非(逻辑反) 对原结果取反
^ 逻辑异或 二者同,为false;二者不同,即为true
& 逻辑与(单与) 二者都为true时才为true,其余情况为false;表达式都要计算
| 逻辑或(单或) 二者都为false时才为false,其余情况为true;表达式都要计算
&& 短路与(双与) 二者都为true时才为true,其余情况为false ;左false即为false,后面表达式不用算
|| 短路或 (双或) 二者都为false时才为false,其余情况为true ;左true即为true,后面表达式不用算
优先顺序自上而下
位运算符
& 按位与 两个数字在二进制的条件下按位比较,都为1的时候才为1
2&3 换算成二进制为10和11 结果为10 对应的是2
| 按位或 两个数字在二进制的条件下按位比较,都为0的时候才为0
2&3 换算成二进制为10和11 结果为11 对应的是3
^ 按位异或 两个数字在二进制的条件下按位比较,不同的时候才为1
2^3 换算成二进制为10和11 结果为01 对应的是1
~ 按位非/取反 一个数字在二进制的条件下进行按位取反,0变1,1变0
>> 右移 换算成二进制,所有位数向右移动1位(若移除位数不包括有效数字,效果相当于十进制数除以2)
12>>2 1100右移2位得11 换算成3
<< 左移 换算成二进制,所有位数向右移动1位(若移除位数不包括有效数字,效果相当于十进制数除以2)
6<<2 110左移2位得11000 换算成24
>>> 无符号右移 左侧空位补0
条件运算符
条件运算符是Java中唯一需要3个操作数的运算符,又称三目运算符或者三元运算符
语法格式如下:
条件 ?表达式 1 :表达式 2
1.首先对条件进行判断,如果结果为true,则返回表达式1的值
2.如果结果为false,返回表达式2的值
例:
int min;
min=5<7?5:7;
System.out.println(min); //min的结果是5
运算符的优先级
可以通过()控制表达式的运算顺序,()优先级最高
单目运算符包括 ! ,~, ++ , -- 优先级别高
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
优先级别最低的是赋值运算符
总体而言,算术运算符 > 关系运算符 > 逻辑运算符