Java中int(Integer)类型与long(Long)类型数据的相互转化

新手开车,先上代码,后边解析! 

能看懂代码就不要看解析!

PS:命名规范,i代指int类型,l代指long类型,I代指Integer类型,L代指Long类型,2(transferTo);

        // 首先创建四个基本操作对象
        Long L0 = 123456l;
        int i0 = 10;
        Integer I0 = new Integer(10);
        long l0 = 1234l;

        // int -> long
        long i2l = i0;// 自动转换

        // long -> int
        int l2i = (int)l0;// 强转

        // int/long -> Integer
        Integer i2I1 = i0;
        Integer i2I2 = new Integer(i0);// 自动封箱
        // Integer l2I1 = new Integer(l0);// 报错
        Integer l2I2 = new Integer((int)l0);// long类型不能直接转换为Integer类型,中间需要强转一次

        // int/long -> Long
        Long i2L = new Long(i0);
        Long l2L1 = l0;
        Long l2L2 = new Long(L0);

        // Integer -> int/long
        int I2i1 = I0;// 自动拆箱
        int I2i2 = I0.intValue();// api获取
        long I2l1 = I0;
        long I2l2 = I0.longValue();

        // Long -> int/long
        int L2i1 = L0.intValue();
        long L2l1 = L0;
        long L2l2 = L0.longValue();

        // Long <-> Integer,不能强制获取,中间需要转换一次
        Integer L2I1 = L0.intValue();
        Long I2L1 = I0.longValue();

解析:

int 类型数据转换为:long、Integer、Long ;

        int -> long :属于小类型向大类型转换(大小指取值范围),自动转换(大本身包含小范围数据);

        int -> Integer :基本数据类型向包装数据类型转换,自动封箱。直接赋值或者new的时候装进去;

        int -> Long : 同上。

long 类型数据转换为:int、Integer、Long;

        long -> int :大类型向小类型转换,需要强制转换。结果前边加需要的数据类型,如本文强转为int类型 “(int)”;注意,如果需要强转的数据本身超过目标类型范围会出现数据错误,比如byte范围仅为[-128, 127],int类型的128转换为byte数据类型的时候会返回-128,在校范围内循环获取;

        long -> Integer : 需要将获取到的long类型数据强转一次再进行封装;

        long -> Long : 基本数据类型向包装数据类型转换,自动封箱。直接赋值或者new的时候装进去。

Integer 类型数据转换为:int、long、Long;

        Integer -> int : 包装数据类型向基本数据类型转换,自动拆箱。可以直接获取值或者调用获取值得api;

        Integer -> long :自动拆箱获取对应int类型数据之后会自动转化为long类型;

        Integer -> Long : 不能强制或直接获取,中间需要int/long类型作为中间类型过渡。

Long 类型数据转换为:int、long、Integer;

        Long -> int : 包装数据类型向小范围的基本数据类型转换,自动拆箱之后需要强制转换。或者调用获取值得api;

        Long -> long : 包装类型转基本类型,自动拆箱;

        Long -> Integer : 不能强制或直接获取,中间需要int/long类型作为中间类型过渡。

    工作的时候由于两个项目的对接没有做好,导致有个字段数据类型不一致(一边定义为Integer,一边定义为Long),试了几次都不能强制转换,专门上网搜了一下,引以为戒!

参考文献:https://blog.csdn.net/u014039577/article/details/37925611

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值