Maison >Java >javaDidacticiel >Comment la comparaison d'objets Java est-elle implémentée ?

Comment la comparaison d'objets Java est-elle implémentée ?

WBOY
WBOYoriginal
2024-04-12 10:09:02812parcourir

La comparaison des objets en Java se fait via leurs références, l'opérateur == compare l'adresse de référence, tandis que la méthode equals() compare le contenu de l'objet. Pour les types primitifs, Equals() compare les valeurs, tandis que pour les types référence, Equals() compare généralement l'égalité de contenu, comme la comparaison des propriétés de valeur de String. Lors de l'utilisation de ==, deux objets différents renverront false même s'ils ont le même contenu ; lors de l'utilisation de equals(), le même contenu d'objets différents renverra true, comme par exemple en comparant deux objets Person.

Comment la comparaison dobjets Java est-elle implémentée ?

Comparaison d'objets Java : mécanisme et pratique

En Java, les objets peuvent être comparés par leurs références. Une référence d'objet représente l'adresse où un objet est stocké en mémoire. Lorsque nous comparons deux références d’objets, nous comparons en réalité si les objets auxquels elles font référence sont identiques.

Méthodes == et equals()

Java propose deux façons de comparer des objets :

  • == opérateur : Compare les références aux objets. Renvoie vrai si les deux références pointent vers le même objet ; sinon faux.
  • Méthode equals() : Compare le contenu réel des objets. Renvoie vrai si les valeurs des deux objets sont égales ; sinon, renvoie faux. Implémentation de

== L'implémentation de l'opérateur

== est relativement simple, il compare directement les adresses de deux références. Deux références sont égales si elles pointent vers le même objet. L'implémentation de

public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    return false;
}

equals() L'implémentation de la méthode

equals() doit être différente selon les différents types d'objets. Pour les types primitifs (par exemple int, double), equals() compare leurs valeurs. Pour les types référence (par exemple String, ArrayList), equals() compare généralement leur contenu pour vérifier l'égalité.

Voici un exemple pour comparer deux objets String :

public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj instanceof String) {
        String other = (String) obj;
        return this.value.equals(other.value);
    }
    return false;
}

Exemple pratique

Supposons que nous ayons un morceau de code dans lequel nous créons deux objets Person :

Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);

Comparez ces deux-là en utilisant l'objet opérateur ==, cela retournera faux car ce sont des objets différents.

System.out.println(p1 == p2); // 输出 false

Cependant, lorsque vous les comparez à l'aide de la méthode equals(), cela retournera vrai car leurs contenus sont égaux.

System.out.println(p1.equals(p2)); // 输出 true

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