Java中int(Integer)类型与long(Long)类型数据的相互转化 |
您所在的位置:网站首页 › int可以直接赋值吗 › 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 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |