First of all I am sorry for not putting my full efforts while asking the question and for the not so clear Subject
well my curiousity behind asking these questions were how string objects are maintained in java.
Most of the places i have read that String s="hello" creates a object in the string literal pool but in the link provided above its written that the String s="hello will create object in the heap only.Now if the object gets created in the string literal pool, so refering to the above program "hello" object gets created, referenced by s1. and "world" referenced by s2.
s1+s2 creates a new object "helloworld" so when String s4="hello"+"world"; gets executed,s4 should get referenced to the earlier "helloworld" object(String literal pool concept) so why s3==s4 evaluates to false.