string 转换成 integer的方式及原理

    Integer a = 2;
private void test() {
    String s1 = a.toString();  //方式一
    String s2 = Integer.toString(a);  //方式二
    String s3 = String.valueOf(a);  //方式三
}

方式一源码:
public String toString() {
return toString(value);
}

public static String toString(int i) {
if (i == Integer.MIN_VALUE)
return "-2147483648";
int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
char[] buf = new char[size];
getChars(i, size, buf);
return new String(buf, true);
}

可以看出 方式一最终调用的是方式二。

通过toString()方法,可以把整数(包括0)转化为字符串,但是Integer如果是null的话,就会报空指针异常。

方式三源码:

public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

可以看出 当 Integer 是null的时候,返回的String是 字符串 "null" 而不是 null

如果想当 Integer 为 null 的时候也返回 null 重写一下 valueOf 方法就行了。

public static String valueOf(Object obj) {
return (obj == null) ? null : obj.toString();
}

你可能感兴趣的:(string 转换成 integer的方式及原理)