Java 基本数据类型转换问题

一、short 和 int

(1)short s1 = 1; s1 = s1 + 1;  // 这行有错

    应改为s1 = (short)s1 + 1;  

(2)short s1 = 1; s1 += 1;       //没有错

分析:Java规范有这样的规则

a.高位转低位需要强制转换            

b.低位转高位自动转.

short s1 = 1; s1 = s1 + 1;中,1 是int 型 ,  s1 short型 通过 + 运算后 s1 自动转为 int 型 , 所以错,应强制类型转换!

后面一句没有错是因为Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),而

(s1 += 1)表达式使用的是复合赋值操作符,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。

果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。

备注:某公司的考试题碰到的,不知道是抄谁的了,若原作看到了可告知,立马改。微笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值