In Java, for non-primitive types, the == operator compares references, not values.
If you create a bunch of equivalent String literals, like:
String sLit1 = "test";
String sLit2 = "test";
(sLit1 == sLit2) will be true, since Java doesn't allocate new memory for each new String literal, it just points them all to the same location in memory. However, when you create a String object:
String sObj = new String("test")
Java always creates a new object, which occupies a new location in memory. So sLit1 == sObj will always be false.
Which means that == yields true if and only if the two arguments refer to the same object. To compare strings, use equals method, as in (sObj.equals(sLit1)).