Maison  >  Article  >  Java  >  Analyse d'instance de méthode de classe d'objet Java

Analyse d'instance de méthode de classe d'objet Java

王林
王林avant
2023-04-18 17:49:051030parcourir

1.equals méthode

1.Introduction à la méthode Equals dans l'API

Analyse d'instance de méthode de classe d'objet Java

2.== La comparaison avec Equals

  • == peut déterminer à la fois le type de base et le type de référence s'il est déterminé pour. types de base, ce qui est jugé est de savoir si les valeurs sont égales. S'il s'agit d'un type de référence, ce qui est jugé est de savoir si les adresses sont égales, c'est-à-dire s'il s'agit du même objet. La méthode

  • equals est une méthode de la classe Object. Elle ne peut déterminer que le type de référence. La valeur par défaut est de déterminer si les adresses sont souvent remplacées dans les sous-classes. si le contenu est égal

Nous pouvons consulter le code source JDK de la méthode equals dans Object, String et Integer.

Object o = new Object();
o.equals(1);//Object类中的equals方法
System.out.println("hello".equals("hello"));//String中的equals方法
Integer integer = new Integer(5);
System.out.println(integer.equals(5));//Integer中的equals方法
//将光标放在equals方法上,按Ctrl同时按鼠标左键,就可跳转到String和Integer中的equals方法的JDK源码。
//Object类中的equals方法
public boolean equals(Object obj) {
        return (this == obj);//判断是不是当前对象
}
//String类中重写的equals方法
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;//首先判断是不是当前对象
        }
        if (anObject instanceof String) {//判断当前类型是不是字符串类型
            String anotherString = (String)anObject;//向下转型
            int n = value.length;//保存传入字符串的长度
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])//一个一个字符比较
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
 //Integer类中重写的equals方法
public boolean equals(Object obj) {
        if (obj instanceof Integer) {//判断当前类型是不是Integer类型
            return value == ((Integer)obj).intValue();//向下转型
        }
        return false;
    }

2.Méthode hashCode

1.Introduction à la méthode hashCode dans l'API

Analyse d'instance de méthode de classe d'objet Java

2. Améliorer l'efficacité des conteneurs avec des structures de hachage.

3. Si deux références pointent vers le même objet, la valeur de hachage est la même. Si elles pointent vers des objets différents, la valeur de hachage est différente.

4. La valeur de hachage est principalement basée sur l'adresse, mais la valeur de hachage ne peut pas être assimilée à l'adresse.

3. Méthode toString

1. Introduction à la méthode toString dans l'API

Analyse d'instance de méthode de classe d'objet Java

2. Retour par défaut : nom de classe complet (nom du package + nom de la classe) + @ + hexadécimal de la valeur de hachage.

3. La méthode toString est souvent remplacée pour renvoyer les propriétés de l'objet.

4. Lorsque l'objet est généré directement, la méthode toString sera appelée par défaut.

//JDK中的toString方法源码
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    //返回全类名(包名+类名)+@+哈希值的十六进制
    }
//重写toString方法
 @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }//往往重写toString方法,用于返回对象属性。

4.méthode finalize

1.Introduction à la méthode finalize dans l'API

Analyse d'instance de méthode de classe d'objet Java

2 Lorsqu'un objet est recyclé, le système appelle automatiquement la méthode finalize de l'objet. Les sous-classes peuvent remplacer cette méthode et effectuer certaines opérations pour libérer des ressources.

3. Lorsqu'un objet n'a pas de référence, la jvm utilisera le mécanisme de garbage collection pour détruire l'objet. La méthode finalize sera appelée avant de détruire l'objet.

4. L'invocation du mécanisme de récupération de place est déterminée par l'algorithme GC du système et peut également être activement déclenchée via System.gc().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer