Wednesday, January 31, 2007

Method local String variable initialization

class Test {
public static void main(String[] args){
new Test().stringTest();
}
public void stringTest() {
String secondName = null; // Version 1
String secondName = ""; // Version 2
String firstName = "Java";
secondName = firstName + " Ranch";
System.out.println(secondName);
}
}

Question: What is the difference between version 1 and version 2 in initializing the method local String variable.

Answer: Variables are REFERENCES to objects. Variables are not objects themselves.
Setting secondName to null means that it is a reference to no object. No methods may be executed using that reference (you'll get NullPointerException if you try).

Setting secondName to "" means that it is a reference to a zero-length String object. Any method of the String class may be executed using this reference. Java will ensure that only one such object gets created, no matter how many times you use "" in your program (literal Strings are 'interned').