Hi Mo
It's so because s1 and s2 refer to the same thing because "abc" and "ab" + "c" are both compile time constants. So the value is calculated at compile time. But the value of s3 + "c" is calculated at runtime and hence s3 + "c" is not in the pool. That is s3 + "c" is a freshly made
string and hasn't been interned so a new memory location is assigned to it. Though both the Strings are identical except the fact that their memory locations are different.
[ June 25, 2003: Message edited by: Anupam Sinha ]