Java Reference
In-Depth Information
Example 3.10.5-1. String Literals
The program consisting of the compilation unit (§ 7.3 ):
Click here to view code image
package testPackage;
class Test {
public static void main(String[] args) {
String hello = "Hello", lo = "lo";
System.out.print((hello == "Hello") + " ");
System.out.print((Other.hello == hello) + " ");
System.out.print((other.Other.hello == hello) + " ");
System.out.print((hello == ("Hel"+"lo")) + " ");
System.out.print((hello == ("Hel"+lo)) + " ");
System.out.println(hello == ("Hel"+lo).intern());
}
}
class Other { static String hello = "Hello"; }
and the compilation unit:
package other;
public class Other { public static String hello = "Hello"; }
produces the output:
true true true true false true
This example illustrates six points:
• Literal strings within the same class (§8) in the same package (§7) represent
references to the same String object (§ 4.3.1 ).
• Literal strings within different classes in the same package represent referen-
ces to the same String object.
• Literal strings within different classes in different packages likewise repres-
ent references to the same String object.
• Strings computed by constant expressions (§ 15.28 ) are computed at compile
time and then treated as if they were literals.
• Strings computed by concatenation at run time are newly created and there-
fore distinct.
• The result of explicitly interning a computed string is the same string as any
pre-existing literal string with the same contents.
Search WWH ::




Custom Search