Sobre el uso del operador de igualdad de Java [duplicado]

Posible duplicado:
¿Cómo comparo cadenas en Java?

class StringTest {
public static void main(String[] args) {
String str1 = "Hi there";
String str2 = new String("Hi there");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}

La salida está saliendo:

                          False
                          true  

¿Por qué la primera salida es falsa incluso cuando str1 y str2 parecen ser iguales?

Respuestas a la pregunta(5)

Su respuesta a la pregunta