保姆级介绍java中的运算符


话不多说,直奔主题


算术运算符

+(加)  -(减)   *(乘)     /(除)     %(取余)     ++(自增) --(自减)

注意:/(除):两个整数相除,其结果一定是整数,小数位计算机自动略去

例:

%: 取模运算

被模数 % 模数 = 结果

注意:结果正负与被模数正负相同  

例如:

++(自增)   --(自减)

自增,自减的运算原理是一样的这边以++为例

注意:++(自增1)--(自减1)不会改变原数据类型,后续开发中,这种方式效率更高,不然进行+1操作,还得进行数据类型强转

先看例子:

解析:

等号在这边为赋值,将等式右边的值赋值给左边

来看++在前,首先num的值先进行了+1运算,将num的值改变成5,然后将结果赋值给num1所以,例子++在前 的 num 与 num1的值都为5

然后++在后,首先num2的值赋值给num3,由于num2还未执行++操作,因此num3的值为num2的初始值4,随后num自己进行+1操作,将num2的值改变成5

结论:

++在前,先自增1在进行运算,例如例子中的赋值运算

++在后,先运算,后自增1

--在前,先自减1在进行运算

--在后,先运算,后自减1


赋值运算符

运算符号: = , +=  ,-= , *=, /=, %= 

+= :   

number+=2   等价于:number=number+2

-= , *=, /=, %= 类似

比较运算符

== ,   !=,  > , <  ,<=  ,>=, instanceof  

比较运算符只有一种结果:true 或者 false

例如:

instanceof:用来测试一个对象是否为一个类的实例,后续在面向对象模块会涉及到  

逻辑运算符

&(与)   |(或) !(非) ^(异或) &&    ||

&(与)、&&:两边都为true,结果才为true

|(或)、  ||:两边都为false,结果才为false

!(非):取反

^(异或):两边相同为false

重点:

&(与)、&& 的区别:

&:会对所有条件进行判断

&&:不会对所有条件进行判断,只要当条件出现false的情况,就不会 继续判断,直接输出为false

|(或)、  || 的区别

|:会对所有条件进行判断

|| :不会对所有条件进行判断,只要当条件出现true的情况,就不会继续判断,直接输出true

在开发中,使用 && 跟 || ,好处就是提高代码执行效率

位移运算符

位移运算符是对整数的二进制进行运算,无符号右移(>>>)和  有符号右移左移(>>,<<) ,在一些原码中经常可以看到

一个数进行位移运算,其实有个巧妙的方法:

<<  左移:   左移几位就乘以2的几次方

 >>,   >>> 右移:  右移几位就除以2的几次方

计算小技巧:

左移不用说,左移几位乘以2的几次方,结果正负取决于要操作数的正负

例如:

右移 (这边先不看无符号右移) :

当右移时,右移几位除以2的几次方,刚好能整除,商就是最终值

若不能整除,这边得考虑想要位移的数是正数还是负数

若为正数:结果向下取整,也就是取小数点前的数字

若为负数:结果向上取整,小数点前的数字+1

结果的正负也取决于要操作数的正负

例如:

解析:

-22 右移两位,-22*(2^2) =-5.5  向上取整,结果符号与-22相同,所以结果为-6

22 右移两位,22*(2^2) =5.5  向下取整,结果符号与22相同,所以结果为5

现在来看无符号右移:(>>>)

无符号:最终位移操作结果都为正数

首先当要操作的数为正数时,跟>>(右移)一样向下取整 

若要操作的数为负数时,这边的计算方法对无符号右移就不适用了,就有一个新的概念,原码,反码,补吗 

原码:

原始二进制表示,最高位为符号位,对于正数来说最高位为0,负数为1

反码:

正数的反码就是原码,负数的反码,符号位不变,其余位取反(0变1,1变0)

补码:

正数的补码就是原码,负数的补码为反码+1 

无符号右移:最高位补0

看个例子:

-10 无符号位移4位


三元运算符

结构:(条件表达式)?表达式1:表达式2

当条件表达式为true时,则执行表达式1 否则表达式2

例如:


更多

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。