This is an order of operations issue. It's being interpreted as follows (parentheses added) :
System.out.println(("Object and literal compare by double equal to :: " + s1) == s2);
System.out.println("Object and literal compare by equals :: " + (s1.equals(s2)) );
System.out.println(("Literal compareing by double equal to :: " + s2) == s3);
System.out.println("Literal compareing by equals :: " + (s2.equals(s3)) );