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();
}
网友评论