Obtención de resultados extraños al imprimir el resultado de una comparación de cadena

Estoy enfrentando un problema con esta línea (comentado abajo):

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

que salidasfalse.

Sin embargo,System.out.println(s3==s4) salidastrue.

Ahora, no puedo entender por qué estoy obteniendo este 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

Respuestas a la pregunta(3)

Su respuesta a la pregunta