这些int到String方法之间有什么区别

时间:2017-10-11 01:06:27

标签: java

有一段时间我需要一个int作为一个字符串,我一直在写这个:

int a = 22;
String b = a + "";

我想知道在参考

时是否应该考虑到任何差异
String b = String.valueOf(a) 
//or 
String b = Integer.toString(a) 

上述方法对于“懒惰铸造”使用有什么好处,还是所有上述方法都是相同的?

1 个答案:

答案 0 :(得分:2)

来自String.java中的源代码,String#valueOf来电Integer#toString

/**
 * Returns the string representation of the {@code int} argument.
 * <p>
 * The representation is exactly the one returned by the
 * {@code Integer.toString} method of one argument.
 *
 * @param   i   an {@code int}.
 * @return  a string representation of the {@code int} argument.
 * @see     java.lang.Integer#toString(int, int)
 */
public static String valueOf(int i) {
    return Integer.toString(i);
}

Integer.toString

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);
}

出于这个原因,我坚持使用Integer#toString

关于String b = a + "":

  • 这是一种反模式,应该避免,因为它会创建不必要的String个对象。