I know that String is immutable. In the example below a String constant object will be created in String pooled area and s1 will point to the "Hello". Also s2 will make a String constant with the same value "Hello". 
But I don't understand why s2 do not point to the first "Hello". From what I understand String "Hello" already exist in the String pooled area and if I create another String with this value, it will point to the existing object rather than create another object. For example s3 points to the same object like s1. 
I didn't use new keyword for s2. Why s2 doesn't point to the same object like s1  and s3? 
public class DemoApp {
    public static void main(String args[]) {
        String s1 = "Hello";
        String s2 = "Hello friends".substring(0, 5);
        String s3 = "Hello";
        System.out.println(s2);        //Hello
        System.out.println(s1 == s2);  //false
        System.out.println(s1 == s3);  //true
    }
}
The output is:
Hello
false 
true
 
     
    