gpt4 book ai didi

java - Java 中最快的字符到字符串转换

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:40 27 4
gpt4 key购买 nike

我看到在 Java 中将 char 转换为 Stirng 的四种选择。

v = Something.lookup(new String((char)binaryData[idx])); // SORRY! Wrong.
v = Something.lookup("" + (char)binaryData[idx]);
v = Something.lookup(String.valueOf((char)binaryData[idx]));
v = Something.lookup(Character.toString((char)binaryData[idx])));

我认为第一个是最慢的。二是很方便。我推测第三个可能会返回一个先前创建的 String 实例,但我不确定,API 文档也没有这么说。这同样适用于选项四。这种实例的重用将是非常幸运的,因为基于散列的查找可以利用 String 中的 hashCode() 缓存。 (API 文档中也没有描述哪个功能,但很多人告诉我。)

我来自 C++,我觉得缺乏复杂性信息令人不安。 :-) 我的推测是否正确?我们有任何声明性能保证和缓存机制的官方文档吗?

最佳答案

首先,Java 规范没有说明这四种方法的性能,因此结果可能因您使用的 JRE 版本和供应商而异。

如果你使用Oracle的JRE,你可以很容易地自己检查源代码!在 Java 8 中,它是这样的:

给定一个具有某个值的 char c:

  • new String(c) 无法编译。没有这样的构造函数。
  • ""+ c 看起来丑陋、笨重且棘手。它在内部创建一个新的空 StringBuilder 并将字符附加到它。然后它从 StringBuilder 中创建一个新的 String 实例。
  • Character.toString(c) 委托(delegate)给 String.valueOf(c)
  • String.valueOf(c) 创建一个新的 String 实例。

那么该用哪一个呢?

最具可读性!

在我看来,这就是 String.valueOf(c)Character.toString(c)!

关于java - Java 中最快的字符到字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29253040/

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