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.
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:
String str1 = "Palavra";
String str2 = "Palavra";
if (str1 == str2){
//Retorna True
}
if (str1.equals(str2)){
//Retorna True
}
Se você usar o new String, você irá gerar objetos diferentes, logo somente o equals irá funcionar, como no exemplo:
String str1 = new String("Palavra");
String str2 = new String("Palavra");
if (str1 == str2){
//Retorna False
}
if (str1.equals(str2)){
//Retorna True
}
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.
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.