Integer.ParseInt()与Integer.valueOf()的区别:(可以直接看最后结论)
查看Integer源码可知:
- 当
valueOf(int)
时,实际上为int的装箱操作。(并不需要手动调用)
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
- 当
valueOf(String s)
时,实际上是调用parseInt(s, 10)
方法,并包装为Integer类型。
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
- 我们再看
parseInt()
,它的参数只能为String
,看到它返回的是int类型。
public static int parseInt(String s, int radix)
throws NumberFormatException{
//BALA BALA 一大堆
}
实验:
总结:
Integer.ParseInt(String)
参数只能为String
!只针对String
类型!- 当参数类型为
String
时,Integer.ParseInt(String)
返回int,Integer.valueOf(String)
返回Integer,无区别。- 由于
Integer.valueOf()
参数可以为String或int,所以支持很多类型的参数:
1. 当参数为byte, char, short
等能自动转换为int
的类型时,会自动转换,当为float
时报错。
2. 特殊的:当参数类型为char
时,Integer.valueOf()
会计算char
的ASCII码值。即int a='1' // a=49
。
补充:
上文提到,当参数类型为char
时,Integer.valueOf()
会计算char
的Ascii码值。即int a='1' // a=49
。
那么如何做到 int数值与char数值相转换?
最常用的方法为
更多char类型数值转int方法请查看:
java char类型数值转int,以及获取ASCII码
(本文均为自己实验及调研结果,如有纰漏,望大家指正!)