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 é o else?

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("Hum...sei não em!");
		
	}else{
		System.out.println("Seja bem vinda!");
	}
	pq pula diretamente para o else se a condição é verdadeira?

2 Respostas

nel

OI.

Antes de mais nada, leia as regras do fórum: [url]http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor[/url].

Sobre sua pergunta, não se usa == para objetos mas sim o método equals().

String s = "1010";
String s1 = "1010";

if (s.equals(s1)) {
// faz algo
}

O '==' deve ser usado em tipos primitivos.

diego.sas
valor1 = new String("1234"); // Cria uma  referencia "A" na memória.
valor2 = new String("1234"); // Cria uma  referencia "B" na memória. Porém ambas contém o mesmo valor

System.out.println(valor1); 
System.out.println(valor2.charAt(2)); 

if(valor1 == valor2) // A comparação aqui é "valor1 aponta para mesma referencia da memória que valor2?
System.out.print(valor1 + " = " + valor2 + " : "); 
else 
System.out.print(valor1 + " != " + valor2 + " : "); // E como esperado eles não apontam para mesma referencia

Se quiser comparar os valores utilize

valor1.equals(valor2)

Abraço

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