国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Java Javacommencer Quelles sont les fonctions de la fonction equals() et de '=='??

Quelles sont les fonctions de la fonction equals() et de '=='??

Jul 10, 2020 pm 04:59 PM
== equals()

Quelles sont les fonctions de la fonction equals() et de '=='??

Tout d'abord, jetons un ?il à leurs différences?:

(Apprentissage recommandé?: programme d'entrée Java)

  • La méthode

    equals() est utilisée pour comparer si le contenu de deux objets est égal. Puisque toutes les classes héritent de la classe java.lang.Object, elle est applicable à tous les objets, si cette méthode n'est pas remplacée. , la méthode toujours appelée est la méthode de la classe Object, mais la méthode equals dans Object renvoie le jugement de ==;

  • "==" compare la mémoire variable (pile). L'adresse mémoire (tas) de l'objet stocké est utilisée pour déterminer si les adresses de deux objets sont identiques, c'est-à-dire si elles font référence au même objet.
Fonction Equals()

La fonction Equals() est utilisée pour déterminer si deux objets sont égaux.

equals() est défini dans Object.java du JDK. Distinguez si deux objets sont égaux en jugeant si leurs adresses sont égales (c'est-à-dire s'il s'agit du même objet). Le code source est le suivant?:

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

Puisque la méthode equals() est définie dans Object.java, cela signifie que toutes les classes Java implémentent la méthode equals() et que toutes les classes peuvent comparer deux objets via equals( ). Si les objets sont égaux.

Cependant, nous avons déjà dit que l'utilisation de la méthode par défaut "equals()" est équivalente à la méthode "==". Par conséquent, nous rempla?ons généralement la méthode equals() : si les contenus des deux objets sont égaux, la méthode equals() renvoie true sinon, renvoie fasle ;

Ce qui suit est divisé en 2 catégories basées sur "si la classe couvre la méthode equals()".

    Si une classe ne couvre pas la méthode Equals(), lorsqu'elle compare deux objets via Equals(), elle compare en fait si les deux objets sont le même objet. à ce stade, cela équivaut à comparer les deux objets via "==".
  • Nous pouvons remplacer la méthode Equals() de la classe pour laisser Equals() comparer si deux objets sont égaux via d'autres méthodes. L'approche habituelle est la suivante?: si les contenus des deux objets sont égaux, la méthode equals() renvoie true sinon, renvoie fasle?;
  • Ce qui suit est un exemple pour illustrer les deux situations ci-dessus?:

1 Le cas où la méthode equals() n'est pas couverte

public class EqualsTest {
    public static void main(String[] args) {
        // 新建2個相同內(nèi)容的Person對象,
        // 再用equals比較它們是否相等
        User user1 = new User("James", 100);
        User user2 = new User("James", 100);
        System.out.printf("比較結(jié)果:" + user1.equals(user2));
    }
 
    /**
     * @desc User類。
     */
    static class User {
        int age;
        String name;
 
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
 
        public String toString() {
            return name + " - " + age;
        }
    }
}

Fonctionnement. résultats?:

false

Analyse des résultats?:

Nous utilisons user1.equals(user2) pour "comparer si user1 et user2 sont égaux". appelé, c'est-à-dire Appelé (user1==user2).

Il compare "si p1 et p2 sont le même objet". à partir des définitions de user1 et user2, nous pouvons voir que bien qu’ils aient le même contenu, ce sont deux objets différents, donc le résultat renvoyé est faux.

(Tutoriel vidéo recommandé?:

Tutoriel vidéo Java

) 2. Remplacer la méthode Equals()

Modifier le test EqualsTest ci-dessus et remplacer Equals(). Méthode?:

public class EqualsTest {
    public static void main(String[] args) {
        // 新建2個相同內(nèi)容的Person對象,
        // 再用equals比較它們是否相等
        User user1 = new User("James", 100);
        User user2 = new User("James", 100);
        System.out.printf("比較結(jié)果:" + user1.equals(user2));
    }
 
    /**
     * @desc User類。
     */
    static class User {
        int age;
        String name;
 
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
 
        public String toString() {
            return name + " - " + age;
        }
 
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            User other = (User) obj;
            if (age != other.age)
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }
    }
}

Résultat d'exécution?:

true

Analyse des résultats?: Nous avons réécrit la fonction equals() de l'utilisateur dans EqualsTest.java?: lorsque le nom et l'age de deux objets User sont égaux, renvoie true. Par conséquent, le résultat en cours d’exécution renvoie vrai. La fonction de

==

? == ? : Sa fonction est de déterminer si les adresses de deux objets sont égales. Il s'agit de déterminer si l'objet de référence est le même objet dans le tas pointé. Nous savons que tous les nouveaux objets sont dans le tas. Les références aux objets sont stockées dans la pile, plus précisément dans le cadre de pile. Regardons le morceau de code suivant?:

public static void main(String[] args) {
        User user1 = new User("James", 100);
        User user2 = new User("James", 100);
        System.out.println("user1.equals(user2):" + user1.equals(user2));
        System.out.println("user1==user2:" + (user1==user2));
}

Résultat de sortie?:

user1.equals(user2):true
user1==user2:false

pointe vers deux objets dans le tas Blocks. se trouvent dans des zones différentes, donc par rapport à "==", false est renvoyé.

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

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)

Sujets chauds

Tutoriel PHP
1502
276