Chapter 5. Strings
Everyone has a logger and most of them are string pigs.
String
s have
a special status in Java. They are the only objects with:
Their own operators (+ and +=)
A literal form (characters surrounded by double quotes, e.g., "
hello
“)Their own externally accessible collection in the VM and class files (i.e., string pools, which provide uniqueness of
String
objects if the string sequence can be determined at compile time)
String
s are immutable
and have a special relationship with
StringBuffer
objects. A String
cannot be altered once created. Applying a method that looks like it
changes the String
(such as String.trim(
)
) doesn’t actually do so; instead, it
returns an altered copy of the String
.
String
s are also final
, and so
cannot be subclassed. These points have advantages and disadvantages
so far as performance is concerned. For fast string manipulation, the
inability to subclass String
or access the
internal char
array can be a serious problem.
The Performance Effects of Strings
Let’s first look
at the advantages
of the String
implementation:
Compilation creates unique strings. At compile time, strings are resolved as far as possible. This includes applying the concatenation operator and converting other literals to strings. So "
hi7
" and("hi"+7)
both get resolved at compile time to the same string, and are identical objects in the class string pool (see Section 3.9.1.2). Compilers differ in their ability to achieve this resolution. You can always ...
Get Java Performance Tuning, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.