Pitfall - Calling new StringString is inefficient
suggest changeUsing new String(String)
to duplicate a string is inefficient and almost always unnecessary.
- String objects are immutable, so there is no need to copy them to protect against changes.
- In some older versions of Java,
String
objects can share backing arrays with otherString
objects. In those versions, it is possible to leak memory by creating a (small) substring of a (large) string and retaining it. However, from Java 7 onwards,String
backing arrays are not shared.
In the absence of any tangible benefit, calling new String(String)
is simply wasteful:
- Making the copy takes CPU time.
- The copy uses more memory which increases the application’s memoru footprint and / or increases GC overheads.
- Operations like
equals(Object)
andhashCode()
can be slower if String objects are copied.
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents