Thursday 14 April 2016

What is the output for following String Literals


  • Literal strings within the same class  in the same package  represent references to the same String object.

  • Literal strings within different classes in the same package represent references to the same String object.

  •  Literal strings within different classes in different packages likewise represent references to the same String object.

  • Strings computed by constant expressions are computed at compile time and then treated as if they were literals.

  • Strings computed by concatenation at run time are newly created and therefore distinct.

  •  The result of explicitly interning a computed string is the same string as any pre-existing literal string with the same contents.



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

No comments:

Post a Comment