运算符

2018-05-23 17:13:27

算数运算符

。执行基本数学运算符

       。。+:加;还可以作为字符串的连接运算符

       。。-:减

       。。*:乘

       。。/:除

              *如果两操作数都是整数,则结果为截断取整数;如19/4=4

              *如果两个操作数都是整数,则除数不能为0,否则引发除以0异常;a/0异常

              *如果操作数存在浮点数,则计算结果为浮点数,且允许除数为0/0.0,得到结果为正无穷大或负无穷大

       。。%:求余

              *求余结果未必是整数

              *如果两个操作数都是整数,则求余运算第二个操作数不能为0,否则引发除以0异常;a%0异常

              *如果操作数存在浮点数,则计算结果为浮点数,且允许求余运算第二个操作数为0/0.0,得到结果为非数NaN :

    

              *0/0.0对零以外的任何数求余都得到0/0.0

              *++:自加

                     **单目运算,只能操作一个操作符

                     **只能操作单个数值型变量,不能操作常量或表达式

                     **在操作数左边,先加1,再将操作数结果放入表达式运算中

                     **在操作数右边,先代入表达式,再将操作数加1

                     **例

                    

              *--:自减

                     **同自减

              *复杂数学运算—借助java.lang.Math类工具方法

                     **Math.pow(a,i)-求a的i次方

                     **Math.sqrt(a)-a的平方根

                     **Math.random()-0~1之间的随机数

                     **Math.sin()-a的sin函数值

             

赋值运算符

。=

。扩展后的赋值运算符

       。。+=:x+=y等同于x=x+y

       。。-=:x-=y等同于x=x-y

       。。*=:x*=y等同于x=x*y

       。。/=:x/=y等同于x=x/y

       。。%=:x%=y等同于x=x%y

       。。&=:x&=y等同于x=x&y

       。。|=:x|=y等同于x=x|y

       。。^=:x^=y等同于x=x^y

       。。<<=:x<<=y等同于x=x<<y

       。。>>=:x>>=y等同于x=x>>y

       。。>>>=:x>>>=y等同于x=x>>>y

位运算符

。&-按位与:当两位同为1为1

。|-按位或:有一位为1则为1

。~-按位非:取反

。^-按位异或:两位相同返回0,不同返回1

       。。两个操作数二进制码右对齐,相同为1,不同为0

       。。如1110

             与 1111

       结果0001  

。<<-左移运算符:将操作数的二进制码整体左移指定位数,左移后右边空出来的位以0补充,超出部分截断

  

  。。原码:对应二进制编码

  。。反码:符号位不变,原码按位取反

  。。补码:反码+1

  。。计算机中以补码存储负数

  。。整数补码、原码相同

。>>-右移运算符:将操作数的二进制码整体右移,左边空出来的位以符号位位填充

       。。如果操作数原来为正数,则左补0

       。。如果操作数原来为负数,则左补1

。>>>-无符号右移运算符:将操作数二进制码右移指定位数,左补0填充

  

。移位运算注遵循规则

       。。对于低于int类型(byte、short、char)的操作数自动转换为int类型后再转换

       。。对于int类型的整数移位a>>b,当b>32时,系统先用b对32求余(int类型32位),得到结果为真正移位数

              *a>>33和a>>1结果相同;

              *a>>32和a结果相同

       。。对于long类型的整数移位a>>b,当b>64时,系统先用b对64求余(long类型64位),得到结果为真正移位数

              *a>>65和a>>1结果相同;

              *a>>64和a结果相同

。注意

       。。当进行移位运算时,只要被移位的二进制码没有发生有效位的数字丢失(对于整数而言,通常被移出的位都是0)

       。。左移n位相当于乘以2的n次方

       。。右移n位相当于除以2的n次方

       。。右移更容易发生有效数字丢失(personal)

比较运算符

。判断两个常量或变量的大小,结果为布尔值(true/false)

。Java支持比较运算符有

       。。>:只支持两边操作数为数值类型

。。>=:只支持两边操作数为数值类型

。。<:只支持两边操作数为数值类型

。。<=:只支持两边操作数为数值类型

。。==:

       *如果两个比较操作数都是数值类型,即使数据类型不同,只要值相等也将返回true

              **97==‘a’;返回true

              **5.0=5;返回true

       *如果两个操作数都是引用类型,只有当两个操作数类型具有父子关系时才可以比较,且两个操作数必须指向同一个对象才会返回true

       *支持boolean类型的比较,如true==false;返回false

       *基本类型变量、值不能和引用类型变量、值进行比较

       *boolean类型变量、值不能和其他任意类型变量、值进行比较

。。!=:

       *进行比较的两个操作数都是数值类型,不论数据类型是否相等,只要值不同返回true

       *两个操作数是引用类型,只有当两个引用变量的类型具有父子关系才可以进行比较,只要两个人引用指向不同的对象就会返回true

逻辑运算符

。&&:与

。。两个操作数都为true返回true

。&:不短路与

。。作用与&&相同,但不会短路

。||:或

       。。两个操作数中有一个为true,则返回true

。|:不短路或

       。。作用与||相同,但不会短路

。!:非

       。。只需要一个操作数,如果操作数为true则返回false

。^:异或

       。。当两个操作数不同时返回true

。逻辑运算符&&、||、!与位运算符&、|、~区别

       。。逻辑运算符先将操作符转换为boolean类型,再进行先关操作

       。。位运算符将操作符转换成二进制码,然后右对齐做相应处理

。短路逻辑运算符与非短路逻辑运算符

       。。以非短路|和短路||为例

      

    *在进行非短路或操作时,对操作符两边的两个操作数都要进行判断,则在该例中b++得到处理

    *在进行短路或操作时,先进行操作符左边的操作数结果判断,如该例中左边操作数为true,则直接给出结果true,右边操作数结果不进行处理,即b++没有得到计算

三目运算符

。?:

       。。(expression)?if-true-statement:if-false-statement

       。。对逻辑表达式进行判断,如果为true则返回第二个操作数值,否则返回第三个操作数的值

。。if else的精简表达

运算符的结合性和优先级

。Java语言大部分运算符是从左到右结合

。单目运算符、赋值运算符、三目运算符是从右到左结合

。运算符优先级—上一行优先级总高于下一行优先级

 运算符说明

Java运算符

分隔运算符

. [] () , ;

单目运算符

++ -- ~ !

强制类型转换

(type)

乘法/除法/求余

* / %

加法/减法

+ -

移位运算符

<<  >>  >>>

关系运算符

<  <=  >  >=  instanceof

等价运算符

==  !=

按位与

&

按位异或

^

按位或

|

条件与

&&

条件或

||

三目运算符

?:

赋值

=

转载于:https://www.cnblogs.com/Demetris/p/9077620.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值