使用(“” + <int值>)转换为字符串是不好的做法吗?
在 Java 中转换为字符串是否使用
"" + <int value>
不良做法?与String.valueOf(...)相比,它有什么缺点吗?
代码示例:
int i = 25;
return "" + i;
与:
int i = 25;
return String.valueOf(i);
更新:(来自评论)
Integer.toString(int i)与String.valueOf(...)相比呢?
在 Java 中转换为字符串是否使用
"" + <int value>
不良做法?与String.valueOf(...)相比,它有什么缺点吗?
代码示例:
int i = 25;
return "" + i;
与:
int i = 25;
return String.valueOf(i);
更新:(来自评论)
Integer.toString(int i)与String.valueOf(...)相比呢?
我总是更喜欢这个版本:主要是因为它显示了你想做什么。目的不是字符串串联 - 而是转换为字符串,“字符串值”。String.valueOfi
第一种形式也可能效率低下 - 取决于编译器是否发现您正在执行的操作。如果没有,则可能是创建新的 StringBuffer 或 StringBuilder 并附加值,然后将其转换为字符串。
有趣的是,我有一篇关于这个话题的文章 - 几年前写的;我的网站IIRC上的第一批Java文章之一。
还有 Integer.toString(int i),它为您提供了将字符串作为十六进制值获取的选项(通过传递第二个参数 16)。
编辑我刚刚检查了字符串类的源代码:
public static String valueOf(int i) {
return Integer.toString(i, 10);
}
和整数类:
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);
}
...
如果调用 ,则调用 ,然后调用 。String.valueOf(i)Integer.toString(i, 10)Integer.toString(i)
所以应该比 快一点,因为你会削减两个函数调用。(尽管编译器可以优化第一个函数调用。Integer.toString(i)String.valueOf(i)
当然,仍然可以为 String.valueOf() 创建可读性参数,因为它允许您更改参数的类型(甚至处理 null!),并且性能差异可以忽略不计。