陷阱 - 调用新的 String(String) 是低效的

使用 new String(String) 复制字符串是低效的,几乎总是不必要的。

  • 字符串对象是不可变的,因此无需复制它们以防止更改。
  • 在某些旧版本的 Java 中,String 对象可以与其他 String 对象共享支持数组。在这些版本中,可以通过创建(大)字符串的(小)子字符串并保留它来泄漏内存。但是,从 Java 7 开始,String 支持阵列不会共享。

在没有任何实际利益的情况下,拨打 new String(String) 简直就是浪费:

  • 制作副本需要 CPU 时间。
  • 该副本使用更多内存,这会增加应用程序的 memoru 占用空间和/或增加 GC 开销。
  • 如果复制 String 对象,equals(Object)hashCode() 等操作可能会更慢。