运算符-java

1、

    byte b1=3;


byte b2=7;


byte b;


b = b1 + b2;  

编译时出现错误,因为b1和b2都是byte变量,两个相加仍是变量,可能会超出byte范围。编译器并不会检查它们的值。下面这样就可以。其实在第一次b1=3的时候,因为3是整型,底层机制会检查3是否在b1的范围内,在范围内的话就赋值成功,所以b1=3这是可以的。

2、

        int x1 = 3;


int x2 = 7;


int x;


        x = x1 + x2;

这样是可以的。虽然x1、x2是变量,但是整型默认是int。如果超出int32位,将会截掉前面高位,只剩后面32位。


3、关于复合赋值运算符

int a = 3;

//a += 4;这是没有问题的。

a = a + 4;//这也是没有问题的。

-------------------------------------------------------

short b = 3;

 //b += 4;同样这也是没有问题的。

            b = b + 4; //这样会编译错误。


同样,int是默认类型,int型的a+=4在底层等价于a = a + 4;

但是对于short,执行b=3的时候由于3默认是int,所以会首先检查3是否在short范围,在的话赋值成功。负责赋值失败,提示可能会损失精度。

执行b+4的时候,b+4 是一个不确定的值,赋给short类型的b可能会超出范围,所以失败。

但是在b+=4的时候,这是一次运算,类似于b=3,也是一次运算,底层会将右值强制转换成成左值类型。b+=4等价于(short)(b+4);


4、关于自增自减

a = 3;

①b = a++;

②b = ++a;

共同性:由于++优先级高于赋值=,所以无论是①还是②,都会先计算右边的值。

特殊性:对于①,a会首先在内存的临时区域开辟一个空间保留a现在的值3,然后在运算区做自增运算,现在a的值等于4了。ok,到现在为止已经计算完了它们的共同性,即右边的值。下一步再把a在临时区域的值3赋值给b,所以b=3。对于②,你懂得~


写得不咋地,自己看得懂就行。加油。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值