No you are wrong, but you are not talking rubbish, you are making an assumption that many people make so keep up with the posting. Here is an extract from my book aimed at the JDK 1.5 exam..
The String Pool
Another peculiarity of the way the String class works is that it uses a �pool� of strings to improve performance. If you create two String instances with the same sequences of characters, rather than occupy memory storing the same sequences multiple times, it stores them in a pool and each new String that requires access to that sequence of characters will point to them. This feature is tied in with immutability as a new String with the same sequence of characters as an existing String can be confident that the String it points to will not change over time.
The existence of the String pool can be very subtle, but it has come up on the programmers exam in the past. Strings are only put into the pool where they are created without the new operator.
Thus if you create two Strings with the same sequence of characters as
String s = �one�;
It will go into the pool, but if you create it with the new operator as
String s = new String(�one�);
It will not go into the pool.
The following code illustrates how Strings created without using the new Operator are actually the same object. Note
you should never, ever
test the equality of Strings using the == operator, this code is actually demonstrating that the strings are the same Object, i.e. It is testing the memory address.