|
|
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
The Java compiler uses theStringandStringBufferclasses 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!"Stringobject. For example,System.out.printlnaccepts aStringargument, so you could use a literal string in place of aStringthere.You can also useSystem.out.println("Might I add that you look lovely today.");Stringmethods directly from a literal string.Because the compiler automatically creates a newint len = "Goodbye Cruel World".length();Stringobject 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";Strings 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 concatenateStrings together:This is a little deceptive because, as you know,String cat = "cat"; System.out.println("con" + cat + "enation");Strings can't be changed. However, behind the scenes the compiler usesStringBuffers 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 aStringthat are not themselvesStrings:The compiler converts the non-System.out.println("Java's Number " + 1);Stringvalue (the integer1in the example) to aStringobject before performing the concatenation operation.
Note to C and C++ Programmers: The shortcut assignment operator+=when used withStrings may confuse C and C++ programmers at first. Recall thata += bis 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"s1ands2print the same result because they both point to the same address. In the Java programming language,Strings can't be modified, so the+operator must create a newStringwhen" world"is appended tos1.The following code sample illustrates that
s1ands2point to the same object until you use the+=operator to assign a newStringtos1.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) = 2452092s1points 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.