Your
String s3 is not in the constant pool.
From the
Java Language Specification section 15.8.1 (talking about the String Concatenation operator +):
The String object is newly created unless the expression is a constant expression.
Your expression 's1 + s2' is not a constant expression, so the result is a new String object.