Java基础-数据类型转换

我们在写Java程序的时候,难免会遇到数据类型转换的问题,根据转换的方式可以分为强制转换和自动转换两种类型。

强制转换

强制转换,顾名思义就能看出,它是强制性的将其转换,也叫作显式类型转换,我们在进行强制转换的时候,在需要转换的数据之前添加()并在其中写入我们需要转换的类型即可,我们现在还是以程序为例吧:

int i = 128;
byte b = (byte)i;
System.out.println(b);//-128

double d = 3.14;
int d1 = (int)d;
System.out.println(d1);//3

这里的转换直接出现了问题,我们将int类型的128转换为byte时就变成了-128,这里就出现了数据溢出的现象。如果我们将int类型的127转换为byte,它就不会出现问题,因为byte的范围是-128~127。我们将double类型的3.14转换为int类型时就变成了3,出现了精度损失。

自动转换

自动转换就是不需要我们进行手动的转换,它也叫作隐式类型转换,程序会自动的将其进行装换,我们还是利用一段代码要进行演示:

byte b2 = 127;
int i2 = b2;
System.out.println(i2);//127

int i3 = 3;
double d3 = i3;
System.out.println(d3);//3.0

这里就是自动类型转换,将byte类型的127转换为了int类型的127,将int类型的3转成double类型的3.0,我们并未对程序修改什么,它自己就将类型做了转换,所以叫自动类型转换。


接下来我们看看两者的区别:

  • 强制类型转换一般是由高到底的转换,自动转换是由底到高的转换。
    在这里插入图片描述
  • 强制类型转换时容易出现精度误差,出现溢出的现象,导致最终的结果出现错误。自动类型转换就不会出现这样的问题。
  • 强制类型转换需要我们自己写出转换的类型,但是自动类型转换我们不需要手动的写出转换的类型。

在这里我们也需要注意以下几点:

  • 不能对布尔值进行转换
  • 不能把对象类型转换为不相干的类型,不能乱转换
  • 把高容量类型转为低容量类型的时候,采用强制转换
  • 强制转换的时候可能会存在内存溢出或者精度损失的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值