logo

Classe de objeto em Java

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

divisão de string java
  • 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' title=

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 .