Comparando objetos

1 resposta
paloma

Pessoal, criei dois objetos.

Funcionario func1=new Funcionario(); Funcionario func2=new Funcionario();

Esta seria uma forma correta de compará-los?

if(func1.equals(func2)

1 Resposta

peczenyj

Depende do que vc considera como igual.

public class A{
  public String nome;
  public int idade;
  public A(String nome, int idade){
     this.nome = nome;
     this.idade = idade;
  }

  public static void main(String [] args){

    A a = new A("joao",1); // cria um objeto
    A b = new A("joao",1); // cria outro com as mesmas caracteristicas
    A c = a; // cria uma referencia

    System.out.println(a.equals(b)); // compara objetos com as mesmas caracteristicas
    System.out.println(a.equals(c)); // compara objeto com uma referencia a ele mesmo

    c.idade = 10;
    System.out.println(a.idade); // o que sera q vai ser impresso???
 }
}

Se vc não sobreescrever o metodo equals, vc vai comparar se os objetos são identicos, isto é, se apontam pro mesmo objeto. como é o caso de a e c. No seu caso, os dois funcionarios seriam diferentes, pois são 2 instancias diferentes do mesmo objeto.

Sugestão - crie uma regra para comparar e implemente um metodo equals

public boolean equals(A a){
	  return this.idade == a.idade && this.nome.equals(a.nome);
  }

ai vc vai dizer puxa, e por que vc usa == e um equals ali?

por que o equals em strings foi preparado para retornar true ou false se as strings possuem o mesmo valor. e == compara entre valores primitivos (e verifica se fazem referencia ao mesmo objeto).

Um erro comum é comparar strings com ==

Criado 5 de julho de 2006
Ultima resposta 5 de jul. de 2006
Respostas 1
Participantes 2