陷阱 - 呼叫新的 String(String) 是低效的

使用 new String(String) 複製字串是低效的,幾乎總是不必要的。

  • 字串物件是不可變的,因此無需複製它們以防止更改。
  • 在某些舊版本的 Java 中,String 物件可以與其他 String 物件共享支援陣列。在這些版本中,可以通過建立(大)字串的(小)子字串並保留它來洩漏記憶體。但是,從 Java 7 開始,String 支援陣列不會共享。

在沒有任何實際利益的情況下,撥打 new String(String) 簡直就是浪費:

  • 製作副本需要 CPU 時間。
  • 該副本使用更多記憶體,這會增加應用程式的 memoru 佔用空間和/或增加 GC 開銷。
  • 如果複製 String 物件,equals(Object)hashCode() 等操作可能會更慢。