【问题标题】:Char array or String Builder字符数组或字符串生成器
【发布时间】:2019-03-07 05:18:12
【问题描述】:

我想知道 Java 中的字符连接 - 以下哪种方法对可读性、维护和性能更好 - 'char array' 或 'string builder'。

该方法必须从两个字符串中获取第一个字母,附加并返回它。

例如: 输入 1:ABC 输入 2:DEF -> 方法应该返回 AD。

使用字符串生成器:

private String getString(String str1, String str2) {
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append(str1.charAt(0));
    stringBuilder.append(str2.charAt(0));
    return stringBuilder.toString();
}

使用字符数组:

private String getString(String str1, String str2) {
    char[] charArray = new char[2];
    charArray[0] = str1.charAt(0);
    charArray[1] = str2.charAt(0);
    return String.valueOf(charArray);
}

【问题讨论】:

  • return "" + str1.charAt(0) + str2.charAt(0);
  • 旁注:当您谈论 readabilitymaintenance 时,请考虑将方法名称从 getString 更改为更合适的名称方法的目的。
  • 通常我更喜欢StringBuilder,但这里的操作非常简单,任何一个都差不多。

标签: java char stringbuilder


【解决方案1】:

StringBuilder 只是一个 char[] 的包装器,添加了一些功能,如根据需要调整数组大小;并在插入/删除等时移动元素。

在某些事情上直接使用 char[] 可能会稍微快一些,但您会丢失(或必须重新实现)很多有用的功能。

【讨论】:

    【解决方案2】:

    charArray 在性能和可读性方面也很好,但很难维护这样的代码。它可能会导致像空指针这样的错误。您只需要使用 char[] 代码添加空检查。

    另一方面,StringBuffer 在内部使用 char。所以,char 在这里更好,而且这样做我们不会创建一个对象。内存角度。最好不要创建那个。

    【讨论】:

      【解决方案3】:

      如果您查看source code 中的StringBuilder,您会发现它在内部使用char[] 来表示缓冲字符串。所以你的代码的两个版本都在做非常相似的事情。但是,我会投票支持使用 StringBuilder,因为它提供的 API 比位于其实现内部的普通 char[] 要多得多。

      【讨论】:

      • 为什么一个 230k 的用户回答一个明显基于意见的问题,而不是进行近距离投票?
      • @DawoodibnKareem 也许我不是我,一些低代表用户劫持了我的帐户?你的问题有很多答案,我什至不知道从哪里开始。
      • 不过,我会投赞成票 - 是的,听起来不像蒂姆
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 2020-10-29
      • 2016-05-06
      • 2012-08-16
      相关资源
      最近更新 更多