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
Stringobjects if the string sequence can be determined at compile time)
Strings 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, the method
returns an altered copy of the String. Strings 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 the discussion in Section 3.5.1.2). Compilers differ in their ability to achieve this ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access