gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:04:09 27 4
gpt4 key购买 nike

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

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com