Classe de objeto em Java

Classe de objeto em Java

Classe de objeto em Java está presente em java.lang pacote.

  • Cada classe é direta ou indiretamente derivada da classe Object. Se uma classe não estende nenhuma outra classe, então ela é uma classe filha direta da Classe de objeto Java e se estender outra classe, será derivado indiretamente.
  • A classe Object fornece vários métodos, como toString()é igual() código hash() e muitos outros.
  • A classe Object atua como raiz da hierarquia de herança em qualquer programa Java.

Aqui usamos o toString() e código hash() métodos da classe Object para fornecer uma representação de string personalizada para uma classe .

Java
   // Java Code to demonstrate Object class   class   Person     {      String     n  ;     //name      // Constructor      public     Person  (  String     n  )     {      this  .  n     =     n  ;      }      // Override toString() for a       // custom string representation      @Override      public     String     toString  ()     {      return     'Person{name:''     +     n     +     ''}'  ;      }      public     static     void     main  (  String  []     args  )     {          Person     p     =     new     Person  (  'Geek'  );          // Custom string representation      System  .  out  .  println  (  p  .  toString  ());          // Default hash code value      System  .  out  .  println  (  p  .  hashCode  ());         }   }   

Saída
Person{name:'Geek'} 321001045  

Explicação: No exemplo acima, substituímos o toString() método para fornecer um representação de string personalizada da classe Person e use o código hash() método para exibir o valor do código hash padrão do objeto.

Métodos de classe de objeto

A classe Object fornece vários métodos que são os seguintes:

  • Método toString()
  • Método hashCode()
  • método igual (objeto obj)
  • método finalizar()
  • método getClass()
  • Método clone()
  • wait() notify() notifyAll() (métodos de simultaneidade)
Métodos de classe de objeto em Java

1. Método toString()

O toString() fornece uma representação String de um objeto e é usado para converter um objeto em uma String. O método toString() padrão para a classe Object retorna uma string que consiste no nome da classe da qual o objeto é uma instância, o caractere de arroba `@' e a representação hexadecimal não assinada do código hash do objeto.

Observação: Sempre que tentamos imprimir qualquer referência de objeto, o método toString() é chamado internamente.

Exemplo:

classe pública Aluno {

string pública paraString() {

return 'Objeto aluno';

}

}

Explicação: O método toString() é substituído para retornar uma representação de string personalizada do objeto Student.

2. Método hashCode()

Para cada objeto, a JVM gera um número exclusivo que é um código hash. Ele retorna inteiros distintos para objetos distintos. Um equívoco comum sobre este método é que o método hashCode() retorna o endereço do objeto que não está correto. Ele converte o endereço interno do objeto em um número inteiro usando um algoritmo. O método hashCode() é nativo porque em Java é impossível encontrar o endereço de um objeto, então ele usa linguagens nativas como C/C++ para encontrar o endereço do objeto.

Uso do método hashCode():

Ele retorna um valor hash que é usado para pesquisar objetos em uma coleção. JVM (Java Virtual Machine) usa o método hashcode ao salvar objetos em estruturas de dados relacionadas a hash, como HashSet HashMap Hashtable etc. A principal vantagem de salvar objetos com base em código hash é que a pesquisa se torna fácil. 

Observação: Substituição de código hash() O método precisa ser feito de forma que para cada objeto geremos um número único. Por exemplo, para uma classe Student, podemos retornar o roll no. de um aluno do método hashCode(), pois é único. 

Exemplo:

classe pública Aluno {

rolo interno;

@Substituir

public int hashCode() {

rolo de retorno;

}

}

Explicação: O código hash() é substituído para retornar um valor de hash personalizado com base na rolagem do objeto Student.

3. Método igual (objeto obj)

O é igual() O método compara o objeto fornecido com o objeto atual. Recomenda-se substituir este método para definir condições de igualdade personalizadas.

Observação: Geralmente é necessário substituir o código hash() método sempre que este método for substituído de modo a manter o contrato geral para o método hashCode que afirma que objetos iguais devem ter códigos hash iguais. 

Exemplo:

classe pública Aluno {

rolo interno;


@Substituir

público booleano igual a (Objeto o) {

if (ou instância do Aluno) {

return this.roll == ((Aluno) o).roll;

}

retornar falso;

}

}

Explicação: O é igual() o método é substituído para comparar rolar entre dois objetos Student.

4. Método getClass()

O getClass() O método retorna o objeto de classe deste objeto e é usado para obter a classe de tempo de execução real do objeto. Também pode ser usado para obter metadados desta classe. O objeto Class retornado é o objeto bloqueado pelos métodos estáticos sincronizados da classe representada. Como é final, não o substituímos.

Exemplo:

Java
   // Demonstrate working of getClass()   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      Object     o     =     new     String  (  'GeeksForGeeks'  );      Class     c     =     o  .  getClass  ();      System  .  out  .  println  (  'Class of Object o is: '      +     c  .  getName  ());      }   }   

Saída
Class of Object o is: java.lang.String  

Explicação: O getClass() O método é usado para imprimir a classe de tempo de execução do objeto 'o'.

Observação: Após carregar um arquivo .class, a JVM criará um objeto do tipo java.lang.Class na área Pilha. Podemos usar este objeto de classe para obter informações em nível de classe. É amplamente utilizado em Reflexão  

5. Método finalize()

O finalizar() O método é chamado logo antes de um objeto ser coletado como lixo. É chamado de Coletor de lixo em um objeto quando o coletor de lixo determina que não há mais referências ao objeto. Devemos substituir o método finalize() para descartar recursos do sistema, realizar atividades de limpeza e minimizar vazamentos de memória. Por exemplo, antes de destruir o contêiner da web dos objetos Servlet, sempre chamamos o método finalize para realizar atividades de limpeza da sessão. 

Observação: O método finalize é chamado apenas uma vez em um objeto, mesmo que esse objeto seja elegível para coleta de lixo diversas vezes. 

Exemplo:

Java
   // Demonstrate working of finalize()   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {          Geeks     t     =     new     Geeks  ();      System  .  out  .  println  (  t  .  hashCode  ());      t     =     null  ;      // calling garbage collector      System  .  gc  ();      System  .  out  .  println  (  'end'  );      }      @Override     protected     void     finalize  ()      {      System  .  out  .  println  (  'finalize method called'  );      }   }   

Saída
1510467688 end finalize method called  

Explicação: O finalizar() O método é chamado logo antes do objeto ser coletado como lixo.

6. Método clone() 

O clone() O método cria e retorna um novo objeto que é uma cópia do objeto atual.

Exemplo:

classe pública Book implementa Cloneable {

String privada t; //título


livro público(String t) {

isto.t = t;

}

@Substituir

clone de objeto público() lança CloneNotSupportedException {

retornar super.clone();

}

}

Explicação: O clone() método é substituído para retornar uma cópia clonada do Objeto livro .

7. Métodos de simultaneidade: wait() notify() e notifyAll()

Esses métodos estão relacionados comunicação de thread em Java . Eles são usados ​​para fazer threads esperar ou notificar outros em programação simultânea.

Exemplo de uso de todos os métodos de classe de objeto em Java

Java
   import     java.io.*  ;   public     class   Book     implements     Cloneable     {      private     String     t  ;     // title      private     String     a  ;     // author      private     int     y  ;     // year      public     Book  (  String     t       String     a       int     y  )      {      this  .  t     =     t  ;      this  .  a     =     a  ;      this  .  y     =     y  ;      }      // Override the toString method      @Override     public     String     toString  ()      {      return     t     +     ' by '     +     a     +     ' ('     +     y     +     ')'  ;      }      // Override the equals method      @Override     public     boolean     equals  (  Object     o  )      {      if     (  o     ==     null     ||     !  (  o     instanceof     Book  ))     {      return     false  ;      }      Book     other     =     (  Book  )  o  ;      return     this  .  t  .  equals  (  other  .  getTitle  ())      &&     this  .  a  .  equals  (  other  .  getAuthor  ())      &&     this  .  y     ==     other  .  getYear  ();      }      // Override the hashCode method      @Override     public     int     hashCode  ()      {      int     res     =     17  ;      res     =     31     *     res     +     t  .  hashCode  ();      res     =     31     *     res     +     a  .  hashCode  ();      res     =     31     *     res     +     y  ;      return     res  ;      }      // Override the clone method      @Override     public     Book     clone  ()      {      try     {      return     (  Book  )  super  .  clone  ();      }      catch     (  CloneNotSupportedException     e  )     {      throw     new     AssertionError  ();      }      }      // Override the finalize method      @Override     protected     void     finalize  ()     throws     Throwable      {      System  .  out  .  println  (  'Finalizing '     +     this  );      }      public     String     getTitle  ()     {     return     t  ;     }      public     String     getAuthor  ()     {     return     a  ;     }      public     int     getYear  ()     {     return     y  ;     }      public     static     void     main  (  String  []     args  )      {      // Create a Book object and print its details      Book     b1     =     new     Book  (      'The Hitchhiker's Guide to the Galaxy'        'Douglas Adams'       1979  );      System  .  out  .  println  (  b1  );      // Create a clone of the Book object and print its      // details      Book     b2     =     b1  .  clone  ();      System  .  out  .  println  (  b2  );      // Check if the two objects are equal      System  .  out  .  println  (  'b1 equals b2: '      +     b1  .  equals  (  b2  ));      // Get the hash code of the two objects      System  .  out  .  println  (  'b1 hash code: '      +     b1  .  hashCode  ());      System  .  out  .  println  (  'b2 hash code: '      +     b2  .  hashCode  ());      // Set book1 to null to trigger garbage collection      // and finalize method      b1     =     null  ;      System  .  gc  ();      }   }   

Saída
The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) b1 equals b2: true b1 hash code: 1840214527 b2 hash code: 1840214527  

Explicação: O exemplo acima demonstra o uso de toString() igual() hashCode() e clone() métodos no Aula de livros .