Java 类型转换

二、java 类型转换

1、容量大小排序

要进行类型转换,首先要知道每种类型容量的大小排序,因为在类型转换的过程中可能出现内存溢出和精度丢失等问题

类型byteshortcharintlongfloatdouble
容量-128~127-32768~32767\u0000~\uffff-231~231-1-263~263-1浮点数浮点数(范围大)

优先级从小到大依次为(浮点数的优先级永远大于整数):

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

运算中,不同类型先转换为同一类型,然后进行运算

2、类型转换

(1)自动转换

当优先级从高到低时,会自动转换,不需要额外操作

(2)强制转换

当优先级从低到高时,需要强制转换,转换格式为

(类型)变量名

(3)注意事项

1、不能对布尔制进行转换
2、不能把对象类型转换为不相干的类型
3、再把高容量转换到低容量的时候,强制转换
4、转换的时候可能出现内存溢出、或者精度问题!

具体操作如下

/*
 注意点;
1、不能对布尔制进行转换
2、不能把对象类型转换为不相干的类型
3、再把高容量转换到低容量的时候,强制转换
4、转换的时候可能出现内存溢出、或者精度问题!

 */

public class Demo04 {
    public static void main(String[] args){
        int i = 128;
        byte b = (byte)i;//内存溢出
                         //强制转换   (类型)变量名   高到低强制转换
        double h = i;    //自动转换    低到高自动转换



        System.out.println(i);
        System.out.println(b);
        System.out.println(h);


        System.out.println("==============================");
        System.out.println((int)23.7);
        System.out.println((int)-45.89f);//精度丢失


        System.out.println("==============================");
        char c = 'a';
        int d = c+1;

        System.out.println(d);
        System.out.println((char)d);




    }
}

输出结果为

在这里插入图片描述

3、溢出问题

操作比较大的数时需要注意溢出问题
操作如下

public class Demo05 {
    public static void main(String[] args) {
        //操作比较大的数时注意溢出问题
        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;//默认是int在转换之前已经存在问题了,所以强制转换无法解决



        System.out.println(total);//结果为-1474836480计算的时候溢出了
        System.out.println((long)total);//结果仍不正确


        long total2 = money*(long)years;//先把一个系数转换
        System.out.println(total2);//这时可以成功输出答案



    }
}

输出结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值