Java中的类型转换--隐式类型转换和显示类型转换

Java中的类型转换

场景:使用等号进行赋值,左右两边的类型不一致

1、隐式类型转换(自动类型转换)

如果左边的类型能够兼容右边的类型,系统将自动进行隐式转换,通俗来说就是左边大,右边小。

1)如果左右都是整型数,长度越大的,单位就越大。

         long>int>short>byte

2)如果两边都是浮点数,左边是double、右边是float可以隐式提升。

3)如果一边是整型,一边是浮点型,左边浮点型,右边整型可以进行隐式提升。

注意:浮点型总是要大于整型的

4)涉及到char类型的转换

char是一个无符号数,所以它在和有符号数进行相互转换时,不能单纯的看字节长度。

  • 左边char,右边byte,即便左大右小,但是也不能进行隐式转换,因为byte中存在char类型无法表示出的数值。

  • 一边是char类型,一边是short类型;两边的范围等长,也不能进行隐式转换。

小结:char和(byte及short)之间都不能相互进行转换。

  • 右边是char,左边是int或比int更大的单位,都可以进行隐式转换,例如:int、long、float、double。

2、显示类型转换(强制类型转换)

  1. 概述:当数据左右两边的兼容性不足以满足隐式转换条件时,如果仍需要转换,就可以使用强转语法。
  2. 语法:(数据类型)变量/常量
  3. 注意:强制类型转换有可能会发生精度丢失问题

强制类型转换一般发生在从大单位转小单位的场景中

从大到小强转的本质是:舍掉多余的、小单位表示不出来的二进制位(放不下的位数)

原则:舍弃高位,保留低位

思考:为什么是舍弃高位,保留的低位?

只有在保留低位的情况下,才有可能保证数值不变;若舍弃高位则有可能舍弃掉真实的数值。

注意:舍弃掉的高位中一定包含原本的符号位;

           剩余低位中的首位,会变成新的符号位;

           有可能会对数值的正负产生影响;

小结:不是所有的强转都一定会发生精度丢失,要看这个数值在目标类型中是否可以表示出来。

例如:现在要将A类型的数值强转为B类型,这个A类型的数值如果本身在B类型中就可以表示出来,那么强转之后数值大小不变。

案例:

面试题:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值