Qual alteração deverá ser feita no primeiro código?? Vlww
Aew sled
coloca isso no if:
if (op.equals("s")) {
S
sled
Colocando isso funciona… Mas viu que no 2º código, mesmo utilizando == ele funcionou. Ai que está a dúvida.!!
deFreitas
Simples amigo, porque quando você usar o operador == está querendo saber se os dois dados comparados tem valores e tipos idênticos e mais que isso se pertencem ao mesmo objeto.
No seu caso o objeto op é uma string e tem o mesmo texto do objeto “s” porém são instancias diferentes do Objeto string.
lembre-se orientação a objetos é a base do java.
nesse blog fala bem sobre isso:
A
Artur_Martini
deFreitas:
Simples amigo, porque quando você usar o operador == está querendo saber se os dois dados comparados tem valores e tipos idênticos e mais que isso se pertencem ao mesmo objeto.
No seu caso o objeto op é uma string e tem o mesmo texto do objeto “s” porém são instancias diferentes do Objeto string.
Com tipos primitivos(int, float, double…) o “==” compara valor.
Com objetos o “==” compara referência de memória, ou seja, só vai te retornar true caso você tenha os dois handlers apontando para um mesmo objeto. Pra comparar o valor de um determindo atributo de um objeto usa-se o .equals()…
No caso da String existem uma exceções por conta do Pool de Strings, que a thread que o colega postou acima explica bem.