Yes. Literal strings with the same value always refer to the same object, so s1 and s2 reference the same object in the same memory address. To create a new string object you would use the new-operator: String s = new String("abc");
http://www.janeg.ca/scjp/oper/string.html
this subject has been discussed to death in these forums, see e.g. http://forum.java.sun.com/thread.jsp?thread=540218&forum=31