类型转换

观察下面例子。思考一下:为什么 "s=s+1;" 编译不通过而"s+=1;"编译就通过了呢?

隐式类型转换可以从 byte->short->int->long自动转换。若反过来如上图 int型转换为short类型,会丢失精度,必须进行显示转换。

s=s+1是先执行s+1然后把结果赋值给s,因为1为int类型,所以s+1的返回值是int,编译器自动进行了隐式类型转换,即将int类型转换为short类型,所以编译的时候会报错。

s+=1不同,由于他是使用+=操作符,在解析的时候s+=1等价于s=(short)(s+1),是进行显示转换。

那么什么是隐式类型转换,什么是显示类型转换

  • 隐式类型转换也叫自动类型转换,由系统自动完成,从存储范围小的类型到存储范围大的类型。byte→short(char)→int→long→float→double
  • 显示类型转换也叫强制类型转换。是从存储范围大的数值类型赋值给存储范围小的类型,由于此时可能会出现丢失精度的问题,因此,需要认为的进行转换。称之为强制类型转换。即double​​​​​​​→float​​​​​​​→long​​​​​​​→int​​​​​​​→short(char)​​​​​​​→byte

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值