Java学习手册:Java基本类型转换

本文深入解析Java中的基本类型转换,包括自动类型转换和强制类型转换的规则,以及在实际编程中可能遇到的精度丢失和溢出问题。同时,文章还提供了实例说明不同类型转换可能带来的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、基本类型转换的两种方式

(1)自动类型转换——小类型到大类型的转换(自动完成,由JVM负责)

转换方向:byte→short→int→long→float→double

转换规则:符号位会自动扩展,负数补1,正数补0。

(2)强制类型转换——大类型到小类型的转换

语法:(要转换的类型)变量

注意:在使用+=,-=,*=,/=,%=运算符进行赋值时,强制类型转换会自动完成,程序不需要做任何显示的声明。

存在问题:①精度丢失②溢出(大类型转换小类型时,源数据的数据位变为目标数据的符号位)


二、强制类型转换的转换规则

原操作数的类型转换后操作数的类型
bytechar
charbyte char
shortbyte char
intbyte short char
longbyte short char int
floatbyte short char int long
doublebyte short char int long double
stringstring

注:在进行强制类型转换时可能会损失精度。


三、注意事项

(1)int直接量可以直接赋给byte、char和short,只要不超过其表示范围。

(2)byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算。(Java在进行整数运算时,默认int型)

Java语言在涉及byte、short和char类型的运算时,首先会把这些类型的变量值强制转换为int类型,然后对int类型的值进行计算,最后得到的值也是int类型。因此,把两个short类型的值相加,最后得到的结果是int类型;如果把两个byte类型的值相加,最后得到的结果也是int类型。如果需要得到short类型的结果,就必须显式地把运算结果转换为short类型。例如:short s1 = 1;s1 = (short)(s1 + 1);有一种例外情况。“+=”为Java语言规定的运算方法,Java编译器会对其进行特殊的处理,因此,语句short s1 = 1;s1+ =1;能够编译通过。

(3)强制类型转换时可能会造成溢出或精度丢失。

//溢出
long l = 1024l*1024*1024*1024*4;
int j = (int)l;//产生溢出
System.out.println(j);//结果为:0

//精度丢失
double pi = 3.141592653589793;
float f = (float)pi;//造成精度丢失
System.out.println(f);//结果为:3.1415927

(4)任何数据类型碰到String类型的变量或常量之后都向String类型转换。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值