Diferencia entre la adición de String Literals y String objetos

¿Cuál es la diferencia entre una adición de String Literal y String Object?

Por ejempl

    String s1 ="hello";
    String s2 ="hello1";
    String s3 ="hello" + "hello1";
    String s4 ="hellohello1";
    String s5 = s1 + s2;

    System.out.println(s3 == s4); // returns true
    System.out.println(s3 == s5); // return false
    System.out.println(s4 == s5); // return false

Por qués3/s4 no apunta a la misma ubicación ques5?

Respuestas a la pregunta(4)

Su respuesta a la pregunta