Long转Integer方法有以下几种:
Long自带的 intValue() 方法
Integer的parseInt()方法
Integer的valueOf()方法
接下来将从以上几个方法分析他们之间的差异于参数的结果
1.Long自带的 intValue() 方法
从源码上看这个方法属于强制类型转换
public int intValue() {
return (int)value;
}
接下来我们分析一下当Long类型超过int最大限制会出现怎么样的结果
int类型占32位,第一位为符号位,取值范围为-231~231-1 即 -2147483648 到 2147483647
但是如果Long不在这个范围会怎么转换呢?
首先,如果Long的大小在-231~231-1之间,正常转换
如果Long的大小在231~232-1 之间,转换的结果为负数
如果Long大于232-1 呢?
经过多次测试,如果大于的话,转换的结果会是该数的232 的余数
2.Integer的parseInt()方法
使用该方法之前需要将Long类型转为String类型
Examples:
parseInt("0", 10) returns 0
parseInt("473", 10) returns 473
parseInt("+42", 10) returns 42
parseInt("-0", 10) returns 0
parseInt("-FF", 16) returns -255
parseInt("1100110", 2) returns 102
parseInt("2147483647", 10) returns 2147483647
parseInt("-2147483648", 10) returns -2147483648
parseInt("2147483648", 10) throws a NumberFormatException
parseInt("99", 8) throws a NumberFormatException
parseInt("Kona", 10) throws a NumberFormatException
parseInt("Kona", 27) returns 411787
以上为使用parseInt方法的注释,
从注释中可的当大小超过2147483647时会抛出 NumberFormatException 异常
同时当数字小于-2147483648时也会抛出 NumberFormatException 异常
3.Integer的valueOf()方法
该方法为Integer内部自带方法,要使用该方法之前,需要将Long转化为String类型。
从源码可看出,它通过Integer自带的parseInt()方法实现。
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
以上有对parseInt的讲解,这里不做过多重复