java学习-基础(2)

一、基本运算符
1、“++”
int a=2 ,b,c;
b=a++;
System.out.println(a);
System.out.println(b);
c=++a;
System.out.println(a);
System.out.println(c);
结果为:3,2,4,4
怎么记住到底是先加还是后加,网上也有很多“偏方”,其实意思都差不多,我自己喜欢念:”a加加”或者”加加a”,先念到哪个,就先用哪个,念“a加加”,先念到“a”,所以先用a的值,在加加,“加加a”就先加加了,在用a的值。

一个特殊的例子:
int i=2;
i=i++;
System.out.println(i);
int j=2;
j=++j;
System.out.println(j);
结果为: 2 , 3。
下面这个还好理解,先加加,再赋值,确实是3,但是前面这个,不太好理解。
这里写图片描述

上图表示进行i++运算时,会先把i的值临时存储起来(图中temp),两个运算最终都会把值赋给i,但是,根据优先级,“++”优先级比“=”高,那么先进行“++”运算,并且把值赋给i,然后进行“=”运算,而等号运算使用的是临时值,再次把值赋给i,那最终i的值就是2了。

2、“+=”
int a=a+b;
int a+=b;
就单纯的执行这两条语句,不考虑编译器的优化的话,a=a+b的执行效率是低于a+=b的,因为它多进行了一步中间变量的操作,而且会多占用一个变量的空间。而Java编译器默认对其进行了优化,优化之后两条语句都当做 a+=b来执行了,所以实际上是没有任何区别的。

其实,“+=”还有一个好处是它底层包括了强制类型转换,
a+=b等价于a=(int)(a+b),所以,直接int a=a+b可能会遇到类型转换异常的问题,而a+=b不会。

3、“&”,“&&”,“|”和“||”
“&”和“&&”两个逻辑运算符功能相同,但是运算方式有点区别,“&”不管左边运算结果是true or false,都继续运算右边,而“&&”一旦左边运算结果为false,右边就不再运算,直接输出false。“|”和“||”同理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lsjweiyi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值