17.string 转换成 integer的方式及原理
1.Integer 转化成String类型
// 方法一:Integer类的静态方法toString()
Integer a = 2;
String str = Integer.toString(a);
// 方法二:Integer类的成员方法toString()
Integer a = 2;
String str = a.toString();
// 方法三:String类的静态方法valueOf()
Integer a = 2;
String str = String.valueOf(a);
源码分析
public String toString() {
return toString(value);
}
public static String toString(int i, int radix) {
if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
radix = 10;
/* Use the faster version */
if (radix == 10) {
return toString(i);
}
char buf[] = new char[33];
boolean negative = (i < 0);
int charPos = 32;
if (!negative) {
i = -i;
}
while (i <= -radix) {
buf[charPos--] = digits[-(i % radix)];
i = i / radix;
}
buf[charPos] = digits[-i];
if (negative) {
buf[--charPos] = '-';
}
return new String(buf, charPos, (33 - charPos));
}
备注:
1.通过toString()方法,可以把整数(包括0)转化为字符串,但是Integer如果是null的话,就会报空指针异常。
2.String.valueOf(Object obj)可以把整型(包括0)转化为字符串,但是Integer如果是null的话,会转化为”null”。从String.valueOf(Object obj)方法的源码可以看出:
/**
* Returns the string representation of the {@code Object} argument.
*
* @param obj an {@code Object}.
* @return if the argument is {@code null}, then a string equal to
* {@code “null”}; otherwise, the value of
* {@code obj.toString()} is returned.
* @see java.lang.Object#toString()
*/
public static String valueOf(Object obj) {
return (obj == null) ? “null” : obj.toString();
}
2.String 转化成 Integer
注意:当我们要把String转化为Integer时,一定要对String进行非空判断,否则很可能报空指针异常.
String temp= “”;
Integer valueOf = Integer.valueOf(temp);//一定判断字符串是否为空