Java new String e erro IF

2 respostas
D

Galera estou com esses dois códigos e não compreendi o que acontece para que as saidas sejam diferentes do esperado!!
Ajuda aí?

public class OlaMundo {

public static void main(String[] args) {
	
	String valor1;
	String valor2;
	String valor3;
	String valor4;
	
	
	valor1 = new String("1234");
	valor2 = new String("1234");
	
	System.out.println(valor1);
	System.out.println(valor2.charAt(2));
	
	if(valor1 == valor2)
		System.out.print(valor1 + " = " + valor2 + " : ");
	else
		System.out.print(valor1 + " != " + valor2 + " : ");
	
	
	valor3 = valor1;
	valor4 = valor2;
	
	if(valor3 == valor4)
		System.out.print(valor3 + " = " + valor4 + " : ");
	else
		System.out.print(valor3 + " != " + valor4 + " : ");
}

}
Pq a saida é : 1234 != 1234 : 1234 != 1234 :?
Se a condição é verdadeira!

public class Diferenca {

public static void main(String[] args) {
	
	Scanner input = new Scanner(System.in);
	String sexo;
	
	sexo = input.nextLine();
	
	
	if(sexo == "homem"){
		
		System.out.println("Seja bem vindo!");
		
	}else{
		System.out.println("Seja bem vinda!");
	}
	
 }

}
pq pula diretamente para o else se a condição é verdadeira?

ex: sexo = “homem” <- usuário digita

mas o resultado esta saindo: Seja bem vinda!

e não -> Seja bem vindo!

2 Respostas

alan_pjr

1: coloque o código nas tags “code”;
2: nunca use “==” para comparar strings, use “string.equalsIgnoreCase(outra string)”.

sgaothaich

valor1 = new String("1234"); valor2 = new String("1234");
Quando tu utiliza == está verificando se as variáves fazem referência ao mesmo objeto, o que no seu caso não é verdade pois voce criou dois objetos diferentes, ou seja, valor1 faz referência a um objeto diferente de valor2.

valor3 = valor1; valor4 = valor2;
Lembre-se que a variável não guarda um objeto e sim uma referência, então atribuindo valor1 a valor3, tu estás dizendo que as duas fazem referência ao mesmo objeto.
Então como o colega se tu queres fazer comparação do conteúdo das variáveis, utilize equals.

Criado 8 de novembro de 2011
Ultima resposta 8 de nov. de 2011
Respostas 2
Participantes 3