Só depois de três anos eu me deparo com um probleminha no java relacionado ao while. Quando uso um ("via"=="vie"), ou (""vie=="vie"), o programa para sem dar explicação.
Comparações com o operador == só são válidas para tipos primitivos (int, char, double, etc…). Comparações entre objetos não-primitivos (String, File, etc.) só são feitas através do método equals.
rafacyber
Muito grato pela resposta, não imaginei que fosse tão rápido.
bruno.leite
Seguinte cara, para saber mais sobre a classe Scanner você pode dar uma olhada mais afundo nesse site:
A classe Scanner usa como delimitador padrão o espaço, então oque retorna na sua String é ‘Palavra’.
A questão do == e do equals em String é um caso a parte no Java devido ao seu Pool de String, quando as Strings são literais você pode usar == que ele retornará true, como no exemplo:
O operador ’ == ’ não é válido somente para tipos primitivos; é utilizado também para verificar se duas referências de objeto estão referenciando o mesmo objeto.
exato, entre objetos o == verifica se as referências apontam para o mesmo objeto.
frequentemente retorna verdade quando temos pool de strings ou cache de objetos (como Integer entre -256 a 255).
bruno.leite
O operador ’ == ’ não é válido somente para tipos primitivos; é utilizado também para verificar se duas referências de objeto estão referenciando o mesmo objeto.