Table des matières
Présentation
Méthode
Il existe deux méthodes standards
Exemple 1 : Remplacement de la méthode equals()
Explication
Sortie
Exemple 2 : Ne pas remplacer la méthode equals()
Exemple 3 : Utilisation des méthodes hashCode() et equals()
Explanation
解释
输出
结论
Maison Java javaDidacticiel Programme Java pour comparer deux objets

Programme Java pour comparer deux objets

Aug 31, 2023 pm 03:45 PM
java l'objet de comparaison est égal à

Programme Java pour comparer deux objets

Présentation

En Java, vous pouvez utiliser la méthode equals() pour comparer des objets, qui détermine si deux objets sont égaux en fonction des propriétés de l'objet. Lors de la comparaison d'objets en Java, il est très important de remplacer la méthode equals() dans la classe pour garantir que la comparaison est basée sur les propriétés requises.

Ce programme Java compare deux objets de type Person en remplaçant la méthode equals() en fonction de leurs attributs name et age. Utilisez d'abord la méthode equals() pour vérifier si les objets appartiennent à la même classe, puis comparez les attributs name et age. Si les deux propriétés correspondent, la méthode renvoie true, indiquant que les objets sont égaux. Si l'une des propriétés est différente, la méthode renvoie false, indiquant que les objets ne sont pas égaux.

Méthode

Il existe deux méthodes standards

  • Utilisez la méthode equals()

    • Non couvert

    • Utiliser la superposition

  • Utilisez les méthodes hashCode() et equals()

Exemple 1 : Remplacement de la méthode equals()

Le remplacement de la méthode equals() dans une classe permet des comparaisons personnalisées basées sur les propriétés de l'objet.

Méthode

  • Nous définissons d'abord une classe Person, qui contient deux variables d'instance privées : le nom et l'âge.

  • Nous définissons un constructeur pour la classe Person qui accepte un nom et un âge et initialise les variables d'instance avec ces valeurs.

  • Nous avons remplacé la méthode equals() dans la classe Person pour comparer deux objets Person en fonction de leur nom et de leur âge. La méthode equals() accepte un paramètre Object. Nous vérifions d'abord si le paramètre n'est pas vide et s'il s'agit d'une instance de la classe Person. Nous convertissons ensuite cet objet en objet Person et comparons ses propriétés de nom et d'âge aux propriétés de nom et d'âge de l'objet actuel.

  • Dans la méthode main(), nous créons deux objets Person avec des noms et des valeurs d'âge différents.

  • Nous appelons la méthode equals() sur le premier objet Person, en passant le deuxième objet Person en paramètre. La méthode equals() renvoie une valeur booléenne indiquant si les deux objets sont égaux.

  • Enfin, nous utilisons System.out.println() pour imprimer les résultats de la comparaison sur la console

public class ObjectComparator {
    
   public static void main(String[] args) {
        
      // Create two objects to compare
      Person person1 = new Person("Alice", 25);
      Person person2 = new Person("Bob", 30);
        
      // Compare the two objects
      boolean areEqual = person1.equals(person2);
      System.out.println("Are the two objects equal? " + areEqual);
   }
}

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) {
      if (obj == null) return false;
      if (!(obj instanceof Person)) return false;
      Person otherPerson = (Person) obj;
      return this.name.equals(otherPerson.name) && this.age == otherPerson.age;
   }
}
Copier après la connexion
La traduction chinoise de

Explication

est :

Explication

Dans cet exemple, nous créons deux objets Person avec des noms et des âges différents, puis appelons la méthode equals du premier objet pour le comparer avec le deuxième objet. La méthode equals est définie dans la classe Person et vérifie si les deux objets ont les mêmes propriétés de nom et d'âge. Enfin, nous imprimons les résultats de la comparaison sur la console.

Sortie

Are the two objects equal? false
Copier après la connexion
Copier après la connexion

Exemple 2 : Ne pas remplacer la méthode equals()

La méthode equals() n'est pas remplacée, les objets sont comparés en fonction de leurs références plutôt que de leurs propriétés.

Méthode

  • Nous définissons d'abord une classe Person, qui contient deux variables d'instance privées : le nom et l'âge.

  • Nous définissons un constructeur pour la classe Person qui accepte un nom et un âge et initialise les variables d'instance avec ces valeurs.

  • Dans la méthode main(), nous créons deux objets Person avec les mêmes valeurs de nom et d'âge.

  • Nous appelons la méthode equals() sur le premier objet Person et passons le deuxième objet Person en tant que paramètre. Puisque nous n’avons pas remplacé la méthode equals() dans la classe Person, l’implémentation par défaut de la méthode equals() héritée de la classe Object est utilisée. L'implémentation vérifie si les deux objets sont le même objet (c'est-à-dire qu'ils ont la même adresse mémoire) et renvoie vrai si c'est le cas. Étant donné que les objets person1 et person2 ont des adresses mémoire différentes, la méthode equals() renvoie false.

  • Enfin, nous utilisons System.out.println() pour imprimer les résultats de la comparaison sur la console.

public class ObjectComparator {
    
   public static void main(String[] args) {
        
      // Create two objects to compare
      Person person1 = new Person("Alice", 25);
      Person person2 = new Person("Alice", 25);
        
      // Compare the two objects
      boolean areEqual = person1.equals(person2);
      System.out.println("Are the two objects equal? " + areEqual);
   }
}

class Person {
    
   private String name;
   private int age;
    
   public Person(String name, int age) {
      this.name = name;
      this.age = age;
   }
}
Copier après la connexion
La traduction chinoise de

Explication

est :

Explication

Dans cet exemple, nous créons deux objets Person avec le même nom et le même âge, puis appelons la méthode equals pour comparer le premier objet avec le deuxième objet. Puisque nous n’avons pas remplacé la méthode equals dans la classe Person, l’implémentation par défaut héritée de la classe Object est utilisée. Cette implémentation vérifie si les deux objets sont le même objet (c'est-à-dire ont la même adresse mémoire) et renvoie vrai si c'est le cas. Étant donné que les objets person1 et person2 ont des adresses mémoire différentes, la méthode equals renvoie false. Enfin, nous imprimons les résultats de la comparaison sur la console.

Sortie

Are the two objects equal? false
Copier après la connexion
Copier après la connexion

Exemple 3 : Utilisation des méthodes hashCode() et equals()

La méthode equals() n'est pas remplacée, les objets sont comparés en fonction de leurs références plutôt que de leurs propriétés.

Méthode

  • Nous avons créé deux objets de classe Personne, personne1 et personne2, avec le même nom et le même âge.

  • Nous appelons ensuite les méthodes hashCode() et equals() sur person1.

  • Dans la classe Person, nous remplaçons la méthode hashCode() et utilisons la méthode Objects.hash() pour générer un code de hachage basé sur les attributs de nom et d'âge de l'objet.

  • 然后我们重写equals()方法,根据它们的姓名和年龄属性来比较两个Person对象。该方法首先检查对象是否属于同一类,如果是,则使用Objects.equals()方法检查它们的姓名和年龄属性是否相等。

  • 在main()方法中,我们使用&&运算符通过hashCode()方法检查person1和person2的哈希码是否相同,并且通过equals()方法返回true。

  • 最后,我们打印出一个消息,指示这些对象是否相等。

public class ObjectComparator {
    
   public static void main(String[] args) {
        
      // Create two objects to compare
      Person person1 = new Person("Alice", 25);
      Person person2 = new Person("Alice", 25);
        
      // Compare the two objects using hashCode and equals methods
      boolean areEqual = person1.hashCode() == person2.hashCode() && person1.equals(person2);
      System.out.println("Are the two objects equal? " + areEqual);
   }
}

class Person {
    
   private String name;
   private int age;
    
   public Person(String name, int age) {
      this.name = name;
      this.age = age;
   }
    
   @Override
   public int hashCode() {
      return Objects.hash(name, age);
   }
    
   @Override
   public boolean equals(Object obj) {
      if (this == obj)
         return true;
      if (!(obj instanceof Person))
         return false;
      Person other = (Person) obj;
      return Objects.equals(name, other.name) && age == other.age;
   }
}
Copier après la connexion

Explanation

的中文翻译为:

解释

在这个例子中,我们创建了两个具有相同姓名和年龄的Person对象,然后调用第一个对象的hashCode()和equals()方法来与第二个对象进行比较。

在Person类中,我们重写了hashCode()和equals()方法,以便根据它们的name和age属性来比较对象。hashCode()方法返回name和age属性的组合的哈希码,equals()方法检查对象是否属于同一类,并且具有相同的name和age属性。

最后,我们使用&&运算符来检查两个对象的哈希码是否相同,并且equals()方法是否返回true。如果两个条件都为true,我们打印出对象相等的信息。否则,我们打印出对象不相等的信息。

输出

The two person objects are equal
Copier après la connexion

结论

  • 这个Java程序使用equals()方法来比较两个Person对象的属性,该方法已在Person类中被重写。

  • 该程序展示了定制对象比较的重要性,并突出了Java在实现自定义比较逻辑方面提供的灵活性。

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Racine carrée en Java Racine carrée en Java Aug 30, 2024 pm 04:26 PM

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro Armstrong en Java Numéro Armstrong en Java Aug 30, 2024 pm 04:26 PM

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

See all articles