Java学习笔记3—变量的类型转换

本文探讨了Java中的自动类型转换和强制类型转换。自动类型转换发生在范围较小的类型向范围较大的类型转换时,如int到double。而强制类型转换可能导致数据丢失,例如double到int。代码示例展示了何时编译会失败,如int与double相加赋值给int变量。此外,文章还提及了隐式类型转换如a+=0.5实际等同于a=(int)a+0.5,并留下了一个关于byte强制转换后值的问题作为悬念。
摘要由CSDN通过智能技术生成

目录

一、自动类型转换

思考1:以下的代码能不能通过编译

思考2:以下的代码能不能通过编译

二、强制类型转换

思考1:以下代码能不能通过编译

拓展:以下代码强转后,byte的值为多少


一、自动类型转换

废话不多说,直接举个例子吧

double a=1;
System.out.println(a);

在这种情况下,给double型的a赋值一个int值的1,这种情况下是可以通过编译的,输出的结果是1.0,说明系统将int型的a=1自动转为了double型的a=1.0。

自动类型转换是取值范围小的类型转为取值范围大的类型,反之将会报错。

思考1:以下的代码能不能通过编译

int a=100;
a=a+0.5;

答案:上面的代码是不可以通过编译的,a为int型,0.5为double型,当int型与double型相加时,结果范围扩大,变为float型(就强原则)。double型不可赋值给int型,所以不能通过编译。

思考2:以下的代码能不能通过编译

byte a=1;
a=a+1;

答案:同理,上面的代码不可以通过编译,1默认为int型,所以a+1的结果为int型,int型不可赋值给byte值。

二、强制类型转换

直接上代码

double a = 3.14;
int b = (int)a;
System.out.println(b);

输出结果为3。

强制类型转换在使用时,先要定义一个转换后类型的值,用来接收装转后的结果,等号右边要把转换后的类型放在括号中,后面跟上需要转换的值。强制类型转换在使用时通常会造成数据的丢失,因此不建议使用。

思考1:以下代码能不能通过编译

int a=1;
a+=0.5;

答案:这种情况是可以通过编译的。很多人认为a+=0.5不是等价于a=a+0.5吗,为什么还可以通过编译?其实a+=0.5隐藏了一个操作 a+=(int)0.5 ,将double型的0.5强制类型转换为int型。

拓展:以下代码强转后,b的值为多少

byte b=(byte)130;
System.out.println(b);

下期我会专门写一篇文章来讨论这道拓展哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G.E.N.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值