【Java基础篇】运算符

1. 算术运算符

运算符运算范例结果
+正号+33
-负号b=4;-b-4
+5+510
-5-41
*3*412
/5/22
%取模5%50
++自增(前)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–b=2;a=1
+字符串相加“hello”+“world”helloworld

算术运算符的注意问题

  • 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。(取模运算符号看被模数,即左边)
  • 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
    • 例如:int x=3510;x=x/1000*1000; x的结果是?3000
  • “+”除字符串相加功能外,还能把非字符串转换成字符串,
    • 例如:System.out.println(“5+5=”+5+5);//打印结果是?5+5 = 55

2. 赋值运算符

运算符运算范例结果
=赋值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
int a,b,c; a=b=c=3;
int a = 3; a+=5;等同运算
a=a+5;  
short s = 3;    
s=s+2;//编译报错  因为short,char ,byte 在表达式运算中会自动向上转型int s=(short)s+2
s+=2;//编译通过

3. 比较运算符

运算符运算范例结果
==相等a=3;b=2;a==bfalse
!=不等于a=3;b=2;a!=btrue
<小于a=3;b=2;a<bfasle
>大于a=3;b=2;a>btrue
<=小于等于a=3;b=2;a<=bfasle
>=大于等于a=3;b=2;a>=btrue
instanceof检查是否是类的对象“Hello” instanceof Stringtrue

注意:

  • 比较运算符运行结束之后返回的都是boolean
  • 注意运算符= =不要写成=

4. 逻辑运算符

运算符运算范例结果
&and(与)false&truefalse
|or(或)true|falsetrue
^xor异或truefalse;truetruetrue;false
!not(非)!falsetrue
&&短路与false&&truefasle
||短路或true||falsetrue

注意:

  1. 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
  2. “&”和“&&”的区别:
    • 单&时,左边无论真假,右边都进行运算;
    • 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
    • “|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
  3. 异或( ^ )与或( | )的不同之处是:当左右都为true时, 结果为false。

5. 位运算符

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

位运算符的细节

  1. << : 空位补0,被移除的高位丢弃,空缺位补0。左移几位就相当于乘以2的几次方
  2. >> : 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。 相当于除以2的几次方。
  3. >>> : 被移位二进制最高位无论是0或者是1,空缺位都用0补。 正数移动没区别,负数移动后变为正数。
  4. & : 二进制位进行&运算,只有1&1时结果是1,否则是0;
  5. | : 二进制位进行| 运算,只有0 | 0时结果是0,否则是1;
  6. ^ : 任何相同二进制位进行^ 运算,结果是0;1^1=0 , 0^0=0不相同二进制位^ 运算结果是1。1^0=1 , 0^1=1
// a. 有两个int型变量a和b,在不使用第三个变量的情况下交换两个变量中的值
public static void swapNum(int a, int b)
	{
		a = a^b;
		b = a^b;
		a = a^b;
		System.out.println("交换后:a="+a+";b="+b);
	}
// b. 最有效率的方式算出2乘以8等于几?2<<3;
class OperationTest 
{
	public static void main(String[] args) 
	{
		System.out.println(2<<3);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李熠漾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值