Java基础知识总结之运算符

本文全面解析Java中的各类运算符,包括算术、赋值、关系、逻辑、位运算符及三元运算符,同时深入探讨了运算符优先级,是Java初学者和进阶者的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要对Java的运算符进行简单总结。

一、算术运算符

运算符运算范例结果
+正号+11
-负号-11
+2+35
-5-23
*2*510
/10/25
%取模5%32
++自增(前):先运算后取值a=2;b=++aa=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
+字符串连接“Ja”+“va”“Java”

注意:

  • /运算两个操作数都是整数时,为整数除法,否则,为浮点除法,例如15/2等于7,15.0/2等于7.5。整数/0将会产生一个异常,浮点数/0会得到无穷大或NAN。
  • %运算结果的符号和被模数相同。
  • 当String字符串与其他数据类型中间使用+号只能是做字符串连接运算,并且结果为String类型。

二、赋值运算符

运算符运算范例结果
=赋值a=3,b=2a=3,b=2
+=加赋值a=3,b=2,a+=ba=5,b=2
-=减赋值a=3,b=2,a-=ba=1,b=2
*=乘赋值a=3,b=2,a*=ba=6,b=2
/=除赋值a=3,b=2,a/=ba=1,b=2
%=取模赋值a=3,b=2,a%=ba=1,b=2
>>=右移位赋值a=6,b=2,a>>=ba=1,b=2
>>>=无符号右移位赋值a=3,b=1,a>>>=ba=1,b=1
<<=左移位赋值a=3,b=2,a<<=ba=12,b=2
&=按位与赋值a=6,b=3,a&=ba=2,b=3
|=按位或赋值a=6,b=3,a|=ba=7,b=3
^=按位异或赋值a=6,b=3,a^=ba=5,b=3

注意:如果复合赋值运算符得到一个值,其类型与左侧操作数类型不同,就会发生强制类型转换。例如x += 3.5;,如果x为int类型,则会将x设置为(int)(x + 3.5)

三、关系运算符(比较运算符)

运算符运算范例结果
==等于7=5false
!=不等于7!=5true
<小于7<5false
>大于7>5true
<=小于等于7<=5false
>=大于等于7>=5true
instanceof检查是否是类的对象“Hello” instanceof Stringtrue

注意:

  • 比较运算符的结果都是布尔类型,要么为true,要么为false。
  • >、< 、>= 、<=只支持左右两边操作数是数值类型。
  • ==、 !=两边的操作数既可以是数值类型,也可以是引用类型。
  • 不要将关系运算符==写成=。

四、逻辑运算符

运算符运算范例结果
&逻辑与false&truefalse
|逻辑或false|truetrue
^逻辑异或true^falsetrue
逻辑非!truefalse
&&短路与false&&truefalse
||短路或false||truetrue

运算法则如下:

aba&ba|ba^b!aa&&ba||b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruetruefalsefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsefalsetruefalsefalse

注意:

  • &与&&以及|与||的区别:
    • &:左边无论真假,右边都进行运算。
    • &&:如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
    • |:左边无论真假,右边都进行运算。
    • ||:如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算。
  • 异或(^)与或(|)的不同之处是,当左右都为true时,结果为false。

五、位运算符

运算符运算范例结果
<<左移位3<<212(3*22
>>右移位6>>21(6/22
>>>无符号右移位3>>>11(3/2)
&按位与6&32
|按位或6|37
^按位异或6^35
~按位非~6-7

<<(左移):空位补0,被移除的高位丢弃,空缺位补0。3<<2运算过程如下:

000000000000000000000000000000113
000000000000000000000000000011左移2位
00000000000000000000000000001100低位补0,结果为12

<<的结果是乘以2的移动位数次幂。

>>:被移位的二进制最高位是0,右移后空缺位补0,最高位是1,空缺位补1。6>>2运算过程如下:

000000000000000000000000000001106
000000000000000000000000000001右移2位
00000000000000000000000000000001高位补0,结果为1

>>的结果是除以2的移动位数次幂。

>>>:被移位的二进制最高位无论是0还是1,空缺位都补0。-6>>>2运算过程如下:

11111111111111111111111111111010-6
111111111111111111111111111110右移2位
00111111111111111111111111111110高位补0,结果为1073741822

&:二进制位进行&运算,参与运算的两位都为1,结果才是1,否则为0。6&3运算过程如下:

000000000000000000000000000001106
000000000000000000000000000000113
000000000000000000000000000000102

|:二进制位进行|运算,参与运算的两位都为0,结果才是0,否则为1。6|3运算过程如下:

000000000000000000000000000001106
000000000000000000000000000000113
000000000000000000000000000001117

^:二进制位进行^运算,参与运算的两位不同,结果才是1,否则为0。6^3运算过程如下:

000000000000000000000000000001106
000000000000000000000000000000113
000000000000000000000000000001015

~:二进制只有1和0,参与运算的位如果是1,取反为0,如果为0,取反为1。~6运算过程如下:

000000000000000000000000000001106
11111111111111111111111111111001-7

当参与取反的数值是正数时,结果为把对应的值加上负号再-1;当参与取反的数值是负数时,结果为把对应的值加上负号再-1。

六、三元运算符(三目运算符)

格式:condition?:expression1:expression2;
condition为true,运算结果为expression1;条件表达式为false,运算结果为expression2。

注意:

  • 表达式1与表达式2的类型必须一致。
  • 使用三元运算符的地方一定可以使用if…else代替,反之不一定成立。

七、运算符优先级

1
表中优先级序号1的优先级最高,优先级序号14的优先级最低。使用优先级为1的小括号可以改变其他运算符的优先级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RtxTitanV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值