Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
The Java compiler uses theString
andStringBuffer
classes behind the scenes to handle literal strings and concatenation.
In Java, you specify literal strings between double quotes:You can use literal strings anywhere you would use a"Hello World!"String
object. For example,System.out.println
accepts aString
argument, so you could use a literal string in place of aString
there.You can also useSystem.out.println("Might I add that you look lovely today.");String
methods directly from a literal string.Because the compiler automatically creates a newint len = "Goodbye Cruel World".length();String
object for every literal string it encounters, you can use a literal string to initialize aString
.The above construct is equivalent to, but more efficient than, this one, which ends up creating twoString s = "Hola Mundo";String
s instead of one:The compiler creates the first string when it encounters the literal string "Hola Mundo!", and the second one when it encountersString s = new String("Hola Mundo");new String
.
In the Java programming language, you can use+
to concatenateString
s together:This is a little deceptive because, as you know,String cat = "cat"; System.out.println("con" + cat + "enation");String
s can't be changed. However, behind the scenes the compiler usesStringBuffer
s to implement concatenation. The above example compiles to:You can also use theString cat = "cat"; System.out.println(new StringBuffer().append("con"). append(cat).append("enation").toString());+
operator to append values to aString
that are not themselvesString
s:The compiler converts the non-System.out.println("Java's Number " + 1);String
value (the integer1
in the example) to aString
object before performing the concatenation operation.
Note to C and C++ Programmers: The shortcut assignment operator+=
when used withString
s may confuse C and C++ programmers at first. Recall thata += b
is equivalent toa = a + b
. Let's look at two code samples written in C++ and the Java programming lanaguage:
In the C++ example, the strings
//C++ code string* s1 = new string("hello"); string* s2 = s1; (*s1) += " world"; cout<<*s1<<endl<<*s2<<endl; return 0; //s1 = s2 = "hello world" //Java progamming language code String s1 = "hello"; String s2 = s1; s1 += " world"; System.out.println(s1 + "\n" + s2); //s1 = "hello world" and s2 = "hello"s1
ands2
print the same result because they both point to the same address. In the Java programming language,String
s can't be modified, so the+
operator must create a newString
when" world"
is appended tos1
.The following code sample illustrates that
s1
ands2
point to the same object until you use the+=
operator to assign a newString
tos1
.Here's the output://Java programming language code String s1 = "hello"; String s2 = s1; System.out.println("s1 = " + s1 + "; s2 = " + s2); System.out.println("System.identityHashCode(s1) = " + System.identityHashCode(s1)); System.out.println("System.identityHashCode(s2) = " + System.identityHashCode(s2)); s1 += " world"; System.out.println("\ns1 = " + s1 + "; s2 = " + s2); System.out.println("System.identityHashCode(s1) = " + System.identityHashCode(s1)); System.out.println("System.identityHashCode(s2) = " + System.identityHashCode(s2));s1 = hello; s2 = hello System.identityHashCode(s1) = 2452092 System.identityHashCode(s2) = 2452092 s1 = hello world; s2 = hello System.identityHashCode(s1) = 7474923 System.identityHashCode(s2) = 2452092s1
points to a new address after" world"
is appended.
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Copyright 1995-2004 Sun Microsystems, Inc. All rights reserved.