陷阱 - 呼叫新的 String(String) 是低效的
使用 new String(String)
複製字串是低效的,幾乎總是不必要的。
- 字串物件是不可變的,因此無需複製它們以防止更改。
- 在某些舊版本的 Java 中,
String
物件可以與其他String
物件共享支援陣列。在這些版本中,可以通過建立(大)字串的(小)子字串並保留它來洩漏記憶體。但是,從 Java 7 開始,String
支援陣列不會共享。
在沒有任何實際利益的情況下,撥打 new String(String)
簡直就是浪費:
- 製作副本需要 CPU 時間。
- 該副本使用更多記憶體,這會增加應用程式的 memoru 佔用空間和/或增加 GC 開銷。
- 如果複製 String 物件,
equals(Object)
和hashCode()
等操作可能會更慢。