The {@code String} class represents character strings. All
string literals in Java programs, such as {@code "abc"}, are
implemented as instances of this class.
<p>
Strings are constant; their values cannot be changed after they
are created. String buffers support mutable strings.
Because String objects are immutable they can be shared. For example:
<blockquote><pre>
String str = "abc";
</pre></blockquote><p>
is equivalent to:
<blockquote><pre>
char data[] = {'a', 'b', 'c'};
String str = new String(data);
</pre></blockquote><p>
Here are some more examples of how strings can be used:
<blockquote><pre>
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
</pre></blockquote>
<p>
The class {@code String} includes methods for examining
individual characters of the sequence, for comparing strings, for
searching strings, for extracting substrings, and for creating a
copy of a string with all characters translated to uppercase or to
lowercase. Case mapping is based on the Unicode Standard version
specified by the {@link java.lang.Character Character} class.
<p>
The Java language provides special support for the string
concatenation operator ( + ), and for conversion of
other objects to strings. For additional information on string
concatenation and conversion, see <i>The Java™ Language Specification</i>.
<p> Unless otherwise noted, passing a {@code null} argument to a constructor
or method in this class will cause a {@link NullPointerException} to be
thrown.
<p>A {@code String} represents a string in the UTF-16 format
in which <em>supplementary characters</em> are represented by <em>surrogate
pairs</em> (see the section <a href="Character.html#unicode">Unicode
Character Representations</a> in the {@code Character} class for
more information).
Index values refer to {@code char} code units, so a supplementary
character uses two positions in a {@code String}.
<p>The {@code String} class provides methods for dealing with
Unicode code points (i.e., characters), in addition to those for
dealing with Unicode code units (i.e., {@code char} values).
<p>Unless otherwise noted, methods for comparing Strings do not take locale
into account. The {@link java.text.Collator} class provides methods for
finer-grain, locale-sensitive String comparison.
@implNote The implementation of the string concatenation operator is left to
the discretion of a Java compiler, as long as the compiler ultimately conforms
to <i>The Java™ Language Specification</i>. For example, the {@code javac} compiler
may implement the operator with {@code StringBuffer}, {@code StringBuilder},
or {@code java.lang.invoke.StringConcatFactory} depending on the JDK version. The
implementation of string conversion is typically through the method {@code toString},
defined by {@code Object} and inherited by all classes in Java.
@author Lee Boynton
@author Arthur van Hoff
@author Martin Buchholz
@author Ulf Zibis
@see java.lang.Object#toString()
@see java.lang.StringBuffer
@see java.lang.StringBuilder
@see java.nio.charset.Charset
@since 1.0
@jls 15.18.1 String Concatenation Operator +
The {@code String} class represents character strings. All string literals in Java programs, such as {@code "abc"}, are implemented as instances of this class. <p> Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. For example: <blockquote><pre> String str = "abc"; </pre></blockquote><p> is equivalent to: <blockquote><pre> char data[] = {'a', 'b', 'c'}; String str = new String(data); </pre></blockquote><p> Here are some more examples of how strings can be used: <blockquote><pre> System.out.println("abc"); String cde = "cde"; System.out.println("abc" + cde); String c = "abc".substring(2,3); String d = cde.substring(1, 2); </pre></blockquote> <p> The class {@code String} includes methods for examining individual characters of the sequence, for comparing strings, for searching strings, for extracting substrings, and for creating a copy of a string with all characters translated to uppercase or to lowercase. Case mapping is based on the Unicode Standard version specified by the {@link java.lang.Character Character} class. <p> The Java language provides special support for the string concatenation operator ( + ), and for conversion of other objects to strings. For additional information on string concatenation and conversion, see <i>The Java™ Language Specification</i>.
<p> Unless otherwise noted, passing a {@code null} argument to a constructor or method in this class will cause a {@link NullPointerException} to be thrown.
<p>A {@code String} represents a string in the UTF-16 format in which <em>supplementary characters</em> are represented by <em>surrogate pairs</em> (see the section <a href="Character.html#unicode">Unicode Character Representations</a> in the {@code Character} class for more information). Index values refer to {@code char} code units, so a supplementary character uses two positions in a {@code String}. <p>The {@code String} class provides methods for dealing with Unicode code points (i.e., characters), in addition to those for dealing with Unicode code units (i.e., {@code char} values).
<p>Unless otherwise noted, methods for comparing Strings do not take locale into account. The {@link java.text.Collator} class provides methods for finer-grain, locale-sensitive String comparison.
@implNote The implementation of the string concatenation operator is left to the discretion of a Java compiler, as long as the compiler ultimately conforms to <i>The Java™ Language Specification</i>. For example, the {@code javac} compiler may implement the operator with {@code StringBuffer}, {@code StringBuilder}, or {@code java.lang.invoke.StringConcatFactory} depending on the JDK version. The implementation of string conversion is typically through the method {@code toString}, defined by {@code Object} and inherited by all classes in Java.
@author Lee Boynton @author Arthur van Hoff @author Martin Buchholz @author Ulf Zibis @see java.lang.Object#toString() @see java.lang.StringBuffer @see java.lang.StringBuilder @see java.nio.charset.Charset @since 1.0 @jls 15.18.1 String Concatenation Operator +