Comparação de Strings

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 ***

Agradeço pela ajuda.

Roberto

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…

[]'s.

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" )

Veja a diferença na saida do console …

Obrigado kaique.
Vou investigar o método String.equals(“A”).
Vivendo e aprendendo!
Abraços
Roberto