Leitura de String

6 respostas
S

Testando um código vi que o descrito abaixo não funciona: (O programa encerra antes de entrar no if)

String op;

System.out.print("Exibir OK? s ou n: "); // digito a o opção s

op = le.next();

if (op == s) {

System.out.println(“OK”);

}

E o seguinte código funciona:

String op = s;

if (op == s) {

System.out.println(“OK”);

}

Qual alteração deverá ser feita no primeiro código?? Vlww

6 Respostas

javahunter

sled:
Testando um código vi que o descrito abaixo não funciona: (O programa encerra antes de entrar no if)

String op;

System.out.print("Exibir OK? s ou n: "); // digito a o opção s

op = le.next();

if (op == s) {

System.out.println(“OK”);

}

E o seguinte código funciona:

String op = s;

if (op == s) {

System.out.println(“OK”);

}

Qual alteração deverá ser feita no primeiro código?? Vlww

Aew sled

coloca isso no if:

if (op.equals("s")) {

S

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

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:

http://tocadojava.blogspot.com.br/2011/09/porque-utilizar-equals-e-nao-para_26.html

Olá

isso não explica o porque o primeiro código da false e o segundo da true.

Fiquei curioso agora rsrs

pmlm

Podes ler esta thread aqui mesmo no GUJ.

Ruttmann

Simples…

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.

:wink:

Criado 2 de outubro de 2013
Ultima resposta 3 de out. de 2013
Respostas 6
Participantes 6