Obtendo saída estranha ao imprimir resultado de uma comparação de string

Estou enfrentando um problema com essa linha (comentada abaixo):

System.out.println("Using == ::"+s3==s4)

quais saídasfalse.

Contudo,System.out.println(s3==s4) saídastrue.

Agora, não consigo entender por que estou obtendo esse resultado:

public class string {
    public static void main(String[] args){
        String s3="Shantanu";
        String s4=s3;
        String s1=new String("java");
        String s2=new String("javaDeveloper");

        System.out.println("Using Equals Method::"+s1.equals(s2));
        System.out.println("Using Equals Method::"+s3.equals(s4));
        System.out.println("Using == ::"+s3==s4);//Problem is here in this line
        System.out.println(s1+"Directly printing the s2 value which is autocasted from superclass to string subclass ");
        System.out.println("Directly printing the s1 value which is autocasted from superclass to string subclass "+s2);
        System.out.println(s3);
    }
}
Output-Using Equals Method::false
Using Equals Method::true
Using == ::false
java Directly printing the s2 value which is autocasted from superclass to string subclass
Directly printing the s1 value which is autocasted from superclass to string subclass javaDeveloper

questionAnswers(3)

yourAnswerToTheQuestion