java中的强制转换_Java中的强制类型转换

本文详细介绍了Java中如何将double类型转换为int类型,以及在数据类型转换过程中可能遇到的问题。通过实例展示了当大类型转换为小类型时,如double转int,会自动截断小数部分,可能导致数据丢失。同时,解释了数据的原反补码原理,特别是在负数转换过程中的变化。此外,还探讨了不同类型转换可能导致的数值异常,如溢出和精度损失。
摘要由CSDN通过智能技术生成

例如,当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢?

显然,这种转换是不会自动进行的!因为 int 型的存储范围比 double 型的小。此时就需要通过强制类型转换来实现了。

48304ba5e6f9fe08f3fa1abda7d326ab.png

public class HelloWorld{

public static void main(String[] args) {

double heightAvg1=176.2;

int heightAvg2=(int)heightAvg1;

System.out.println(heightAvg1);

System.out.println(heightAvg2);

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

61bb20cc488ed613104a0dcc03d4d518.png

一开始heightAvg1是double类型的,转换成int类型的话要(int)heightAvg1

规律一:当把大的类型转化为小的类型的时候,因为补码的换算问题,所以可能会产生一些想不到数据

int i = 35;

byte b = (byte)i;

运行结果:35

int i = 128;

byte b = (byte)i;

运行结果:-128

规律二:小数在转化为整数的时候是舍弃小数位

double d = 6.4;

int i = (int)d;

运行结果:6

扩展:数据的原反补三码

数据类型的最高位是符号位 --- 如果最高位是0,则表示一个正数;如果最高位是1,则表示一个负数。

计算机中存储的是数据的补码,计算的也是数据的补码

直接计算出来的二进制数字是数据的原码

如果是正数,那么原反补三码一致

int i = 7;

00000000 00000000 00000000 00000111 原码

00000000 00000000 00000000 00000111 反码

00000000 00000000 00000000 00000111 补码

如果是负数,那么反码是在原码的基础上,最高位不变,其余位01;补码是在反码的基础上+1

int j = -9;

10000000 00000000 00000000 00001001 原码

11111111   11111111   11111111  11110110  反码

11111111   11111111   11111111  11110111  补码

注意:规定用-0表示当前类型的最小值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值