This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
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").
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 ;-)