java - 原始 + ""与 Wrapper.toString(原始)

标签 java coding-style

当需要将原始类型转换为字符串时,例如传递给需要字符串的方法时,基本上有两种选择。

int为例,给出:

int i;

我们可以执行以下操作之一:

someStringMethod(Integer.toString(i));
someStringMethod(i + "");

第一个是“正式”方法,第二个似乎有点“hack”。

恕我直言,代码肯定少了很多,也更容易阅读。
但是使用“hack”是“好的”编码风格吗?

最佳答案

将 * 转换为 String 的最佳方法是使用:

String.valueOf(x)

它适用于实现 toString() 的原始类型、包装类和对象。

其中 x 是任何类型的基元或对象。如果它为 null,则返回字符串“null”。

之所以最好,是因为使用“+”操作数意味着字符串连接,加上“”意味着字符串实例化。如果您使用 ""+something 反编译一个类,您会看到编译器将其转换为多个操作。

""连接结果与 String.valueOf() 相同,但它的开销稍大一些。 性能差异可能可以忽略不计,但优秀的程序员不会编写 '""+ something' 在有更好的方法时将某些内容转换为字符串,而这恰好是正确的方法:)。

对于数组,请查看 Arrays.toString()和-更好- Arrays.deepToString()

But is it "good" coding style to use the "hack"?

有时语法修改可以使代码更好。但是上面的案例并不是真正的案例之一。 ""连接不被认为是好的代码。

一个有用的语法 hack 的例子是双括号实例化:

List<String> list = new ArrayList<String>() {{
    add("foo");
    add("bar");
    add("baz");
}};

代替

List<String> list = new ArrayList<String>();
list.add("foo");
list.add("bar");
list.add("baz");

""+something 与其说是提高可读性的 hack,不如说是一种代码味道;任何有经验的人都会想到缺乏 API 和语言知识的 Java 开发人员。

其他有趣的“hacks”是流畅的 API(如 Mockito)、dsl 或类似 lambda4j 的东西,这是一个非常 hack。

关于java - 原始 + ""与 Wrapper.toString(原始),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026929/

相关文章:

java - 创建 Java 汽车类

r - 在 R 中对数据帧进行矢量化循环

html - 我如何风格化这个结构并添加滚动条?

php - PSR-1 2.3 副作用规则

testing - 你如何回应论点 "No time to test/develop clean code, because of the deadline"?

Java:三重花括号

java - 如何正确添加 JVM 系统属性标志

Java/JPA - 动态设置对象/实体的属性

java - 使用数组的二叉树

java - 实现公共(public)接口(interface) Hibernate + Spring 的类的自定义字段唯一性验证