运算符的使用及运算优先级和运算规则

目录

(一)算术运算符

(2)赋值运算符

(三)比较运算符

(四)逻辑运算符

(五)位运算符

(六)三元运算符

(七)运算符的优先级

(八)运算规则


(一)算术运算符

算术运算符
运算符运算范例结构
+正号+33
-负号b=4;-b-4
+5+510
-6-42
*3*412
/5/51
%取余(取模)7%52
++

自增(前):先运算后取值

a=2;b=++a;a=3;b=3
++自增(后):先取值后运算a=2;b=a++a=3;b=2
--自增(前):先运算后取值a=2;b=--aa=1;b=1
--自增(后):先取值后运算a=2;b=a--a=1;b=2
+字符串连接"he"+"llo""hello"

%:取余运算

(1)结果的负号与被模数的符号相同。

(2)开发中,经常用%能否被除尽的情况。

++or--不会改变本身变量的数据类型。

(2)赋值运算符

 符号:=

a.当"="两侧数据类型不一样时,可以使用自动类型转换或使用强制类型转换原则进行处理。

b.支持连续赋值。

扩展赋值运算符
运算符范例转化结果
+=n=10;n+=2n=n+212
-=n=10;n-=2n=n-28
*=n=10;n*=2n=n*220
/=n=10;n/=2n=n/25
%=n=10;n%=2n=n%20

(三)比较运算符

运算符运算范例结果
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检查是否是类的对象"hello"instanceof Stringtrue

a.比较运算符的结果都是boolean型,也就是true或false。

b.区分==和=。

(四)逻辑运算符

&——逻辑与         |——逻辑或         !——逻辑非

&&——短路与         ||——短路或        ^——逻辑异或

aba&ba&&ba|ba||b!aa^b
tureturetureturefalsefalsefalsefalse
turefalsefalsefalsetureturefalseture
falseturefalsefalsetureturetureture
falsefalsefalsefalseturetureturefalse

逻辑运算符操作的都是boolean类型的变量。

区分:&与&&
相同点1:&与8&的运算结果相同。
相同点2:当符号左边是true时,二者都会执行符号右边的运算。
不同点:当符号左边是false时,&继续执行符号右边的运算,&&不再执行符号右边的运算。

开发中,推荐使用&&

区分:|与||
相同点1:|与|| 的运算结果相同。
相同点2:当符号左边是false时,二者都会执行符号右边的运算。
不同点:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算。
开发中,推荐使用||

(五)位运算符

位运算是直接对整数的二进制进行的计算。

运算符运算范例位运算符的细节
<<左移3<<2=12-->3*2*2=12空位补0,被移除的高位丢弃,空缺位补0。
>>右移3>>1=1-->3/2=1被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>无符号右移3>>>1=1-->3/2=1移位二进制最高位无论是0或者是1,空缺位都用0补。
&与运算6&3=2二进制位进行&运算,只有1&1时结果是1,否则是0;
|或运算6|3=7二进制位进行|运算,只有0|0时结果是0,否则是1;
^异或运算6^3=5相同二进制位进行^运算,结果是0;1^1=0,0^0=0
不相同二进制位^运算结果是1。1^0=1,0^1=1
~取反运算~6=-7正数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反
 

结论:
1.位运算符操作的都是整型的数据
2.<<:在一定范围内,每向左移1位,相当于*2
>>:在一定范围内,每向右移1位,相当于/2

(六)三元运算符

1.结构:(条件表达式)?表达式1:表达式2
2.说明
条件表达式的结果为boolean类型
根据条件表达式真或假,决定执行表达式1,还是表达式。

2.如果表达式为true,则执行表达式1,如果表达式为false,则执行表达式2。
3.表达式1和表达式2要求是一致的。
4.三元运算符可以嵌套使用

5.凡是可以使用三元运算符的地方,都可以改写为if-else

反之,不成立。

6.如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁,执行效率高。

(七)运算符的优先级

上一行运算符优先于下一行 

。         ()         {}         ;         ,
++         --         ~         !(data type)
*         /         %
+         -   
<<`         > >         >>>
<         >         <=         >=         instanceof
==         !=
&
^
|
&&
||
?          :
=         *=         /=          %=
+=         -=         <<=         >>=
>>>=         &=         ^=         |=

只有单目运算符,三元运算符,赋值运算符是从右向左运算的。

总结:

不必刻意记,善用()进行计算。

(八)运算规则

前提:这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的。
1.自动类型提升:
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte、char .short -->int-->long -->float -->double
特别的:当byte、char、short三种类型的变量做运算时,结果为int型
注意:若使用String进行计算,从String数据后运算数据均为String型。

2.强制类型转换:自动类型提升运算的逆运算。
1.需要使用强转符: ()
2.注意点:强制类型转换,可能导致精度损失。


 


 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值