Código não tão bom:

if(nome.compareTo("João") == 0)

if(nome == "João")

if(nome.equals("João"))

Nenhuma das comparações acima está errada, mas elas também não são boas. O método compareTo é exagerado e muito verboso. O operador == testa a identidade do objeto, o que provavelmente não seja o que você quer fazer. O método equals é o caminho certo, mas colocar a constante antes da variável lhe dá uma segurança extra caso nome seja nulo.

Código perfeito:

if("João".equals(nome))