类型的转换

本文详细介绍了Java中的类型转换,包括自动类型转换和强制类型转换。强调了转换的优先级,指出从低到高转换需要强制转换,而从高到低则自动转换。在转换过程中需要注意内存溢出和精度问题。示例中展示了当整数运算可能超出int范围时,必须使用long类型避免溢出。最后提醒开发者在使用大数值时注意使用下划线分隔,以提高可读性,并且在处理大计算时要确保类型正确。
摘要由CSDN通过智能技术生成

类型转化

由于java是强类型语言,所以要进行游有些运算时,需用到类型转换。

1.优先级

低------------------------------------------------------------------>高

byte,short,char--> int--> long-->float-->double

小数优先级大于整数,所以float与double在高。1.内存溢出

int a1 = 128;
byte a2 = (byte)a1;//内存溢出 
System.out.println(a1);//内存溢出 输出-128---问题点1

问题点1:计算机以二进制进行运算,127二进制为0111 1111,超过时(127+1的二进制运算0111 1111+0000 0001),会变成-128二进制1000 0000,所以输出为-128.

2.强制类型转换

int a1 = 128;
byte a2 = (byte)a1;//强制转换

由低到高转换,需要强制转换,(类型)变量名,而且要注意内存溢出。

(类型)变量名 高--->低

3.自动类型转换

int a1 = 128;
double a2 = a1;//强制转换

由高到底,自动转换。

4.转换的注意事项

  1. 不能对布尔值进行转换

  2. 不能把对象类转换为不相干的类型

  3. 在高容量转换低容量时,强制转换,低到高不用动

  4. 转换时可能会存在内存溢出或精度问题(小数)。

        System.out.println((int)26.9);//26
        System.out.println((int)26.9f);//26

5.常见问题

        int money = 10_0000_0000;//jdk7新特性,数字间可以加下划线,不影响使用。
        int years = 20;
        int total1 = money*years;//超出范围 报错 应使用long。
        long total2 = money*years;//计算机先对money与years经行运算,但是他们还是int类型,直接定义变量long没用。
        long total3 = money*((long)years); //强转years变成long类型,正确运算。
        System.out.println(total1); //-1474836480
        System.out.println(total2); //-1474836480
        System.out.println(total3); //20000000000

在有些时候大写L与小写l,小写容易被看成1,可以大写时尽量大写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值