java中的运算符有哪几类(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
例如:
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!