Maison  >  Article  >  Java  >  Distinguer la méthode égale et la méthode égale en Java

Distinguer la méthode égale et la méthode égale en Java

WBOY
WBOYoriginal
2024-02-18 14:17:07573parcourir

Distinguer la méthode égale et la méthode égale en Java

La différence entre égal et égal en Java nécessite des exemples de code spécifiques

En Java, nous avons souvent besoin de comparer si deux objets sont égaux. Dans ce cas, nous utilisons généralement la méthode égale ou la méthode égale en Java. Bien qu’ils se ressemblent, ils présentent des différences importantes. Cet article présentera la différence entre égal et égal et l'expliquera à travers des exemples de code spécifiques.

Tout d’abord, jetons un coup d’œil à la méthode égale. La méthode égale est une méthode de la classe Object et tous les objets en Java peuvent appeler cette méthode. Cette méthode utilise la comparaison de références, c'est-à-dire pour déterminer si deux objets ont la même référence. Deux objets sont égaux si leurs références sont les mêmes. Voici un exemple de code :

String str1 = new String("Hello");
String str2 = new String("Hello");
boolean result = str1.equals(str2);
System.out.println(result); // 输出结果为 true

Dans le code ci-dessus, nous avons créé deux objets chaîne str1 et str2, qui ont tous deux des valeurs "Bonjour". Cependant, ces deux objets sont créés séparément via le mot-clé new, leurs références sont donc différentes. Cependant, puisque la classe String remplace la méthode equals, lorsque nous appelons str1.equals(str2), elle renvoie true, indiquant que les deux chaînes sont égales.

Ensuite, jetons un coup d’œil à la méthode des égalités. La méthode equals est une méthode publique de la classe Object. Nous pouvons la surcharger pour comparer le contenu de deux objets. Par défaut, la méthode égale utilise toujours la comparaison de références. Si nous souhaitons personnaliser les règles de comparaison, nous devons remplacer la méthode égale. Voici un exemple de code :

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

    // 省略构造函数和其他方法

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }

        Person person = (Person) obj;

        if (age != person.age) {
            return false;
        }
        return name != null ? name.equals(person.name) : person.name == null;
    }

    // 省略hashCode方法和其他方法    
}

Dans l'exemple de code ci-dessus, nous avons créé une classe Person et remplacé la méthode equals. Lors de la substitution de la méthode equals, nous déterminons d'abord si les références des deux objets sont identiques. Si elles sont identiques, nous pouvons directement renvoyer true. Ensuite, nous déterminons si obj est vide et appartient à la même classe, puis convertissons obj en type Person et comparons si les valeurs de nom et d'âge sont égales.

Ce qui suit est un exemple de code pour utiliser Person :

Person person1 = new Person("Tom", 20);
Person person2 = new Person("Tom", 20);
boolean result = person1.equals(person2);
System.out.println(result); // 输出结果为 true

Dans le code ci-dessus, nous avons créé deux objets Person, personne1 et personne2, dont le nom et les valeurs d'âge sont les mêmes. Lorsque nous appelons person1.equals(person2), parce que nous avons réécrit la méthode equals, les valeurs de nom et d'âge seront comparées lors de la comparaison, donc le résultat renvoyé est vrai.

Pour résumer, égal et égal sont des méthodes couramment utilisées en Java pour comparer si les objets sont égaux. La méthode égale est une méthode de la classe Object, qui détermine si deux objets sont égaux via une comparaison de références ; la méthode égale est une méthode de comparaison personnalisée qui vous permet de personnaliser les règles de comparaison. Dans le développement réel, nous devrions choisir d'utiliser ces deux méthodes pour comparer des objets en fonction de besoins spécifiques.

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