Maison > Java > javaDidacticiel > Que signifie == en Java ?

Que signifie == en Java ?

(*-*)浩
Libérer: 2019-05-21 16:57:10
original
11871 Les gens l'ont consulté

À quoi compare exactement l'opérateur relationnel « == » ?

La phrase suivante est un extrait du livre "Java Programming Thoughts" : "Les opérateurs relationnels génèrent un résultat booléen, et ils calculent la relation entre les valeurs des opérandes.".

Cette phrase semble simple, mais elle doit encore être bien comprise. Pour faire simple, == est utilisé pour comparer si les valeurs sont égales.

Regardons quelques exemples :

public class Main {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub 
        int n=3;
        int m=3;        
        System.out.println(n==m);        
        String str = new String("hello");
        String str1 = new String("hello");
        String str2 = new String("hello");        
        System.out.println(str1==str2);        
        str1 = str;
        str2 = str;
        System.out.println(str1==str2);
    }
}
Copier après la connexion

Le résultat de sortie est :

true 
false
true
Copier après la connexion

n==mLe résultat est vrai , c'est facile à comprendre. Les valeurs stockées dans la variable n et la variable m sont toutes deux égales à 3. Et pourquoi les résultats des deux comparaisons de str1 et str2 sont-ils différents ? Pour comprendre cela, il vous suffit de comprendre la différence entre les variables de type de données de base et les variables de type de données non basiques.

Pour les variables de ces 8 types de données de base, les variables stockent directement la "valeur", donc lorsque l'opérateur relationnel == est utilisé pour la comparaison, la "valeur" elle-même est comparée. Il convient de noter que les types à virgule flottante et entier sont des types signés, tandis que char est un type non signé (la plage de valeurs du type char est 0~2^16-1).

C'est-à-dire pour dire Par exemple :

int n=3;
int m=3; 
Copier après la connexion

La variable n et la variable m stockent directement la valeur "3", donc par rapport à ==, le résultat est vrai.

Pour les variables de types de données non basiques, elles sont appelées variables de type référence dans certains livres. Par exemple, str1 ci-dessus est une variable de type référence. Une variable de type référence ne stocke pas la "valeur" elle-même, mais l'adresse de son objet associé en mémoire.

Par exemple, la ligne de code suivante :

String str1;
Copier après la connexion

Cette phrase déclare une variable de type référence, qui n'est associée à aucun objet pour le moment.

Utilisez new String("hello") pour générer un objet (également appelé instance de la classe String) et liez cet objet à str1 :

str1= new String("hello");
Copier après la connexion

Puis str1 pointe vers un objet (str1 est également appelé référence à un objet à de nombreux endroits). À ce stade, la variable str1 stocke l'adresse de stockage de l'objet vers lequel elle pointe en mémoire, et non la "valeur" elle-même, c'est-à-dire qu'elle le dit. que la chaîne "hello" n'est pas stockée directement. Les références ici sont très similaires aux pointeurs en C/C++.

Ainsi, lorsque vous utilisez == pour comparer str1 et str2 pour la première fois, le résultat est faux. Par conséquent, ils pointent respectivement vers des objets différents, ce qui signifie que les adresses mémoire où ils sont réellement stockés sont différentes.

Dans la deuxième comparaison, str1 et str2 pointent tous deux vers l'objet pointé par str, donc le résultat est sans aucun doute vrai.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal