java中赋值不生效啥意思_为什么不是Java的=, - =,* =,/ =复合赋值操作符需要转换?...

问题

直到今天,我认为,例如:

i += j;

只是一个捷径:

i = i + j;

但是,如果我们尝试这样做:

int i = 5;

long j = 8;

然后i = i j;不会编译,但是i = j;会编译好。

这是否意味着实际上i = j;是这样的一个快捷方式i =(类型i)(i j)?

#1 热门回答(2194 赞)

形式为E1 op = E2的复合赋值表达式等价于E1 =(T)((E1)op(E2)),其中T是E1的类型,但E1只计算一次。

[...]下面的代码是正确的:short x = 3;

x = 4.6;

并导致x的值为7,因为它等价于:short x = 3;

x =(短)(x 4.6);

换句话说,你的假设是正确的。

#2 热门回答(438 赞)

这个演员的一个很好的例子是使用* =或/ =

byte b = 10;

b *= 5.7;

System.out.println(b); // prints 57

要么

byte b = 100;

b /= 2.5;

System.out.println(b); // prints 40

要么

char ch = '0';

ch *= 1.1;

System.out.println(ch); // prints '4'

要么

char ch = 'A';

ch *= 1.5;

System.out.println(ch); // prints 'a'

#3 热门回答(221 赞)

例如,下面的代码是正确的:short x = 3;

x = 4.6;

并导致x的值为7,因为它等价于:short x = 3;

x =(短)(x 4.6);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值