基本数据类型转换 (自动类型转换、强制类型转换)

本文详细介绍了Java中自动类型转换的规则,包括不同数据类型间的转换顺序及原理,解释了为什么float类型比long类型拥有更大的数值范围。同时,文章深入探讨了强制类型转换的语法和使用场景,提醒开发者注意精度丢失的问题。

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

自动类型转换(默认转换)
把一个范围小的数值或变量直接赋值给另一个数据范围大的变量时,系统可以进行自动类型转换。
注意:不能将数据范围大的变量或数值赋值给范围小的变量,例如:int a = 25; byte b = a; 会直接报错。
自动转换顺序:byte->short->int->long->float->double-> char
这里byte,short,char他们参与运算时首先会自动转换成大范围类型再参加运算。有int类型就转换成int类型,有long类型的就转换成long类型再参加运算。
long:8个字节,float:4个字节 。那为什么float要比long的范围大呢?
截取自https://www.cnblogs.com/lzc55555/p/11465051.html在这里插入图片描述
图片截取自https://www.cnblogs.com/lzc55555/p/11465051.html

强制类型转换
将大范围的数据向小范围的数据进行转换则需要进行强制转换。
语法格式为:类型 变量名称 = (targetType)value;
例如:
float f = 12.5F;
int e = (int)f; //变量e的值为整数12,不会保留小数
别随意使用强制类型转换,因为强制类型转换隐藏着一个精度丢失的问题。
如果大范围的数据值超过了小数据的范围,则按位进行截取。
int a1 = 336; // 0000 0000 0000 0000 0000 0001 0101 0000
byte b1 = (byte)a1; //8位 截取后8位 0101 0000
System.out.println(b1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值