Um, a introdução da classe Object
-
Classe de objeto: Localizada no pacote java.lang, é a classe raiz e superclasse do relacionamento de herança, e a classe pai de todas as classes (classe pai direta ou classe pai indireto);
-
As referências de tipo de objeto podem ser usadas para armazenar qualquer tipo de objeto;
-
Os métodos são definidos na classe Object e todas as classes podem ser usadas diretamente.
2. Métodos comuns na classe Object:
-
getClass (): Retorna o tipo de objeto realmente armazenado na referência.
Desenvolvimento de aplicações práticas: usado para determinar se os tipos de objetos realmente armazenados nas duas referências são iguais,
Consistente-verdadeiro; inconsistente-falso.
class Animal{ } class Dog extends Animal{ } class Cat extends Animal{ } public class TestAnimal{ public static void main(String[] args){ Animal a1 = new Cat(); Animal a2 = new Dog(); System.out.println(a1.getClass() == a2.getClass()); } }
-
int hashCode (): Retorna o valor do código hash inteiro do objeto. A fonte do valor do código hash do objeto é
O endereço em hexadecimal, o resultado da conversão de um inteiro decimal.
Nota: Uma vez que objetos diferentes têm endereços diferentes no espaço de heap, todos os objetos diferentes
Tem diferentes valores de código hash.
-
String toString (): Retorna a forma de realização da string do objeto.
(1) Função: É conveniente exibir as informações do objeto, e a subclasse geralmente cobre o método toString
(2) O princípio da cobertura do método toString é: normalmente todos os atributos são unidos em uma string.
O resultado é retornado.
public class TestStudent{ public static void main(String[] args){ Student s = new Student("liucy",18,99.0); System.out.println(s);// 默认调用toString方法 } } class Student{ private String name; private int age; private double score; public Student(){ } public Student(String name,int age,double score){ this.name=name; this.age=age; this.score=score; } // get/set public String toString(){ return "name:"+name+",age:"+age+",score:"+score; } }
Observação: a diferença entre o método get e o método toString:
a. O método get retorna as informações de um único atributo do objeto e não altera os dados correspondentes do atributo
Tipo
b. O método toString obtém as informações de todos os atributos e une todos os atributos em um
O resultado do tipo String é retornado.
-
boolean equals (Object o): usado para comparar se o conteúdo do objeto é o mesmo.
== Aplicação
(1) Se as duas extremidades de == são variáveis do tipo de dados básicos, então julgue se os valores nas variáveis são os mesmos
Se ambas as extremidades de == forem referências, será avaliado se os endereços armazenados nas referências são os mesmos.
(2) Aplicação prática no desenvolvimento: normalmente usado para determinar se duas referências apontam para o mesmo objeto.
Expressão: nome de referência 1 == nome de referência 2
A. O resultado é verdadeiro, o que significa que as duas referências apontam para o mesmo objeto;
B. O resultado é falso, o que significa que as duas referências apontam para objetos diferentes.
Aplicação do método igual:
(1) O princípio de implementação do método equals na classe-pai Object class é o seguinte:
public boolean equals(Object obj) { return (this == obj); }
Nota: O método equals na classe pai é usado para comparar se duas referências são o mesmo objeto, mas durante o desenvolvimento, o método equals é geralmente usado para comparar o conteúdo do objeto, então o método equals na classe pai não é suficiente para atender às necessidades da subclasse, portanto, você precisa substituir o método equals na classe pai Object.
(2) O princípio da cobertura do método igual:
public boolean equals(Object obj){ // 1. 自反性:判断当前对象和要比较的对象是否为同一个对象 : //this(当前对象) 和 obj(要比较对象) if(this == obj){ return true; } // 2. 判断 obj是否 空 if(obj == null){ return false; } // 3. 判断 两个引用中实际存储的对象类型是否一致 if(this.getClass() != obj.getClass()){ return false; } // 4. 强制类型转换: 为一一比较对象属性做准备 Student s = (Student)obj; // 5. 将对象中属性一一进行比较:基本数据类型的属性:== ; 引用类型:equals比较 if(this.age == s.age && this.score == s.score && this.name.equals(s.name)){ return true; }else{ return false; } }
Foco da entrevista: A diferença entre == e o método de igual.
(1) == Ambas as extremidades são tipos de dados básicos, compare se os valores nas variáveis são os mesmos
== Ambas as extremidades são variáveis de tipo de referência, compare se o endereço de armazenamento de referência é o mesmo
(2) Método igual: O método na classe Object é usado para implementar (==) implementação, comparar o objeto
Endereço; mas no desenvolvimento real, o método equals precisa ser substituído para comparar objetos
Se o conteúdo de é o mesmo.
-
finalize (): Um método que é chamado automaticamente quando a JVM executa a coleta de lixo.
(1) Objeto de lixo: um objeto apontado por nenhuma referência.
Aluno s = novo Aluno ();
s = null; // Defina o objeto apontado por s como um objeto de lixo
(2) Coletor de lixo: usado para JVM para coletar objetos de lixo. Referido como gc / GC
(3) O objetivo da coleta de lixo: remover objetos de lixo, liberar espaço e melhorar a utilização do espaço.
(4) Quando o coletor de lixo coleta objetos de lixo:
a. Mecanismo de reciclagem automática: Quando a memória JVM se esgota e o espaço não pode mais ser alocado para objetos recém-criados, o coletor de lixo na JVM irá reciclar automaticamente todos os objetos de lixo de uma vez. Quando o coletor de lixo recicla objetos de lixo, o finalize método é chamado automaticamente.
b. Mecanismo de coleta manual: Use System.gc (); Notifique o coletor de lixo (GC) para realizar a coleta de lixo, se o GC estiver ocioso, então a coleta de lixo será realizada, se o GC estiver ocupado, não será coletado temporariamente
Nota: Durante o desenvolvimento, nenhum código importante é escrito no método finalize e o nó de execução do método finalize é incontrolável.