Alguém pode me explicar por que não funciona o if abaixo?
public class TesteIf {
static String campo10 = "0123456789";
static String A = "345";
static String B;
public static void main(String[] args) {
B = campo10.substring(3, 6); // --> B = "345"
/* Verifica o valor dos campos A e B, que, em princípio
são idênticos */
System.out.println("Campo A =[" + A + "]");
System.out.println("Campo B =[" + B + "]");
// Este if dá false, apesar de A == B. Por que?
if (A == B){
System.out.println("*** Campo A == Campo B ***");
}
else {
System.out.println("*** Campo A diferente de Campo B ***");
}
}
}
O resultado é:
Campo A =[345]
Campo B =[345]
*** Campo A diferente de Campo B ***
Cara, quando você usa o operador ‘==’ para comparar objetos, você compara o valor das posições de memória deles. Quando se deseja comparar os valores contidos nos objetos, deve-se usar o método equals(). Existem vários posts falando sobre esse mesmo assunto. Dá uma vasculhada no fórum que você vai entender direitinho…
Hhehehe prq todo iniciante em Java passa por essa confusao
if (A == B){
Para comparar String utilize os metodos String.equals(“A”) ou String.equalsIgnoreCase(“A”) este ultimo nao ha diferença entre maisculas e minisculas
if (A.equals(B))
Pelo exemplo anterior A == B vc esta comparando se referencia de memoria de A é igual a de B por isso sempre retorna false na verdade vc quer comparar se ambas o conteudo são equivalentes
Faça um teste assim:
A = B;
if (A == B)
System.out.println(" A referencia de A eh == a de B" )
B = new String("C");
if (A == B)
System.out.println(" A referencia de A eh == a de B" )
else
System.out.println(" A referencia de A eh != a de B" )