陷阱 - 调用新的 String(String) 是低效的
使用 new String(String)
复制字符串是低效的,几乎总是不必要的。
- 字符串对象是不可变的,因此无需复制它们以防止更改。
- 在某些旧版本的 Java 中,
String
对象可以与其他String
对象共享支持数组。在这些版本中,可以通过创建(大)字符串的(小)子字符串并保留它来泄漏内存。但是,从 Java 7 开始,String
支持阵列不会共享。
在没有任何实际利益的情况下,拨打 new String(String)
简直就是浪费:
- 制作副本需要 CPU 时间。
- 该副本使用更多内存,这会增加应用程序的 memoru 占用空间和/或增加 GC 开销。
- 如果复制 String 对象,
equals(Object)
和hashCode()
等操作可能会更慢。