java基本数据类型转换(待研究装箱Integer的范围问题,是否jdk8修复)

本文详细介绍了Java中的两种类型转换方式:自动类型转换和显示类型转换。自动类型转换遵循从小到大的存储范围规则,如byte到double;显示类型转换则允许进行任意转换,但可能引起精度丢失。文章通过实例演示了int到char类型转换导致的数据变化。

1.类型自动转换。

转换规则:从存储范围小的类型到存储范围大的类型。
具体规则为:byte→short(char)→int→long→float→double

注意问题:在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。



2.类型显示转换。

转换规则:可以任意转换,但是存储范围大的类型到存储范围小的类型可能会丢失精度。

如下面例子:

        int i = 165533;
		Integer integer=165533;
		System.out.println(Integer.toBinaryString(integer));
		System.out.println(Integer.toBinaryString(34461));
		System.out.println((int)(char) i);

结果为:

101000011010011101
1000011010011101
34461

可以看到,i=165533的二进制已经为18位,而char只有两个字节,即16位,因此将int强制转换成char后,保留的数字位低16位的数字,为34461.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值