首选声明和转换基本数据类型为字符串的方法

3
我有三个选项:
  1. 声明double成员,然后当我必须传递String时使用member + ""
  2. 声明double 成员,然后当我必须传递String时使用Double.toString (member)
  3. 声明Double member = 0.0,然后当我必须传递String时使用member.toString()
我的观点:
  1. 这是最短的选项。但是,member + ""将转换为new StringBuilder().append(member).append("").toString(),看起来不太优雅。
  2. Double.toString(member)中,我不喜欢它不从单词member开始,这是最重要的部分。我们只需要将其转换。如果可以把member放在开头会更好,因为我关注单词的开头。快速浏览一下,我就知道"啊,好的,我正在传递成员"。而使用Double.toString(member),我的第一注意力集中于"啊,好的...一个Double,我们正在进行toString...一个成员!啊好的"。
  3. member.toString()看起来不错,而且在Eclipse中有自动完成,所以输入速度更快。但是,对象比基本类型慢得多。参考。
哪一个是最好的选项?也许还有其他选项吗?
1个回答

5
最好的综合方法是适用于任何事情的:
String s = String.valueOf(x);

这里的x可以是一个基本类型或对象,而且(重要的是)可能为null
编辑:
一种简便方法是:
X + "";

需要注意的是,这种方法并不是很高效,因为它编译后的代码如下:

new StringBuilder().append(x).append("").toString();

而对.append(x)的调用无论如何都会引用String.valueOf(x)


请注意,数组需要特殊处理:

String s = Arrays.toString(array);

1
这里可能会有一个对象为空,这是toString的一个弱点。 - Joop Eggen
对于基本类型,它调用相应包装类的 toString() 方法。 - jlordo
本来准备写另一个答案来指出数组异常,但你已经解决了。+1 - Alexis King
谢谢,很好。但是我不喜欢它以 String.valueOf 开头,而不是一个真正重要的东西:x。对我来说,这比简单的 x + ""x.toString() 不太易读。 - Adam Stelmaszczyk
对于双精度浮点数,在调用前会自动装箱,这只会生成垃圾并消耗时间。如果该代码位于内部循环中,则值得使用 Double.toString(x) - Gene
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接