valueOf:返回的是个包装类
parseInt:返回的就是基本数据类型
二者的差异:
中间有个装箱拆箱的过程,如果准确的知道自己要的是什么返回值的话,
就可以明确清楚的选择用哪个方法来转换,而获得自己想要的值,且是最大效率的do it.
(当然,这一般情况下是没人去管这个的,因为这个是findbugs找到的,所以,才有这篇文章的出现。)
Java包装类型的装箱拆箱机制
JAVA基本类型,不用new来创建变量,而是创建一个并非是“引用”的“自动”变量。这个变量拥有它的“值”,并置于堆栈中,因此更加高效。
Java中的某些操作只能使用对象,而基本类型不是类类型,不能实例化成对象,比如Collection,就必须以对象实现。
所谓的装箱指的是基本类型转换为包装类型,拆箱指的是包装类型转换为基本类型。
以 int 为例,如下:
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}