AFAIK, the String Literal Pool is created when the class is loaded. At this point the JVM doesn't know what String will you type when you will execute the class. Every value you type is treated as a new object, therefore it acts just like you would type new String("test").
Edit: Oh, and try changing
Just for fun :-)
OCP Java SE 6 Programmer, OCM Java SE 6 Developer, OCE Java EE 6 JSPSD, OCE Java EE 6 EJBD, OCE Java EE 6 JPAD, Spring 3.0 Core Professional.
Michel, yea, the questions in Kathy and Bert's book are a bit tougher than the real exam ones.
By the way, try running this as java Test xx (or better - try to guess what will be the output before running). I think this example will give you the better feeling of what is happening in this weird String Literal Pool thing ;-)