Maison >Java >javaDidacticiel >Comment utiliser la fonction equals() de la classe Object en Java pour comparer si deux objets sont égaux

Comment utiliser la fonction equals() de la classe Object en Java pour comparer si deux objets sont égaux

PHPz
PHPzoriginal
2023-07-24 20:00:171875parcourir

Comment Java utilise-t-il la fonction Equals() de la classe Object pour comparer si deux objets sont égaux ?

En Java, la fonction Equals() est une méthode utilisée pour comparer si deux objets sont égaux. Toutes les classes Java héritent de la classe Object, tous les objets peuvent donc être comparés à l'aide de la fonction equals(). Cependant, pour comparer correctement l'égalité de deux objets, vous devez remplacer la méthode equals() dans votre classe personnalisée.

L'implémentation par défaut de la méthode equals() dans la classe Object utilise l'égalité de référence pour la comparaison. Autrement dit, la méthode equals() renverra true uniquement lorsque deux objets font référence à la même adresse mémoire. Ce n'est pas le comportement que nous souhaitons dans la plupart des cas. En règle générale, nous souhaitons comparer le contenu de deux objets pour vérifier leur égalité.

Pour atteindre cet objectif, nous devons remplacer la méthode equals() dans la classe personnalisée. Lorsque vous remplacez la méthode equals(), vous devez faire attention aux points suivants :

  1. Tout d'abord, vous devez vérifier si l'objet entrant est nul. Si l’objet transmis est nul, false est renvoyé directement.
  2. Deuxièmement, vous devez vérifier si l'objet transmis est une instance de la classe actuelle. S'il ne s'agit pas d'une instance de la même classe, renvoyez directement false.
  3. Enfin, nous pouvons comparer les propriétés de deux objets pour l'égalité selon les besoins. La méthode de comparaison dépend de la situation réelle.

Ce qui suit est un exemple simple, nous utilisons une classe Person pour montrer comment remplacer la méthode equals() :

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        // 检查传入的对象是否为null
        if (obj == null) {
            return false;
        }
        
        // 检查传入的对象是否是Person类的实例
        if (!(obj instanceof Person)) {
            return false;
        }
        
        // 比较两个对象的属性是否相等
        Person other = (Person) obj;
        return this.name.equals(other.name) && this.age == other.age;
    }
}

Dans l'exemple ci-dessus, nous remplaçons la méthode equals() de la classe Person. Tout d’abord, nous vérifions si l’objet entrant est nul et, si c’est le cas, renvoyons directement false. Ensuite, nous utilisons l'opérateur instanceof pour vérifier si l'objet entrant est une instance de la classe Person, et sinon, renvoyons directement false. Enfin, nous comparons les propriétés name et age des deux objets pour voir si elles sont égales, nous renvoyons true, sinon nous renvoyons false.

Ensuite, nous pouvons utiliser la méthode equals() pour comparer si deux objets Person sont égaux :

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Bob", 30);
        Person person3 = new Person("Alice", 25);

        System.out.println(person1.equals(person2)); // false
        System.out.println(person1.equals(person3)); // true
    }
}

Dans l'exemple ci-dessus, nous avons créé trois objets Person. En appelant la méthode equals() pour comparer person1 et person2, le résultat est faux car leurs attributs name et age ne sont pas égaux. En appelant la méthode equals() pour comparer person1 et person3, le résultat est vrai car leurs attributs name et age sont égaux.

Grâce à l'exemple ci-dessus, nous pouvons voir comment utiliser la méthode equals() de la classe Object pour comparer si deux objets sont égaux. En remplaçant la méthode equals(), nous pouvons déterminer si les objets sont égaux en fonction de leurs propriétés pour répondre à nos besoins réels.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn