Points à connaître avec Java Equals

Contrôle nul de la partie 1


public static void main(String[] args) {

	String str1 = null;
	String str2 = "test";

	System.out.println(str1.equals(str2));//Exécuter 1
	System.out.println(str2.equals(str1));//Exécution 2
}

L'exécution 1 déclenche une exception java.lang.NullPointerException. La cause de l'exception est que j'ai mis null dans str1 et appelé la méthode à partir de l'objet null. L'appel d'une méthode à partir d'un str2 non nul ne lèvera plus d'exception et retournera false.

L'écriture de l'exécution 2 a l'avantage qu'une exception ne se produit pas même si str1 est nulle, mais elle a l'inconvénient qu'il est difficile de remarquer des erreurs de code si elle est implémentée sans supposer que null sera entré comme un système anormal. Je pense.

Si vous êtes conscient de la vérification de null, il peut être plus sûr de l'attraper avec la gestion des exceptions.

public static void main(String[] args) {

	String str1 = null;
	String str2 = "test2";

	try {
		System.out.println(str1.equals(str2));
	}catch(NullPointerException ex) {
		System.out.println("Capture d'exception");
	}
}

Partie 2 Piscine constante


public static void main(String[] args) {

	String str1 = "test1";
	String str2 = "test1";

	System.out.println(str1.equals(str2));//Résultat 1
	System.out.println(str1 == str2);     //Résultat 2
}

Le résultat 1 est bien sûr vrai, mais qu'en est-il du résultat 2? En conclusion, le résultat 2 est également vrai.

En effet, il existe un mécanisme appelé pool constant. Les caractères littéraux apparaissent fréquemment dans le programme. Cependant, si vous créez une instance de String à chaque fois, elle consommera beaucoup de mémoire.

Si le même littéral de chaîne réapparaît, la référence à l'instance de chaîne dans l'espace mémoire de la constante sera "réutilisée". Il s'agit d'un mécanisme appelé pool constant.

Ce pool de constantes n'est valide que lors de l'utilisation de chaînes littérales. Si vous écrivez explicitement pour créer une nouvelle instance à l'aide de l'opérateur new, une instance sera créée à chaque fois et chaque variable aura une référence différente.

public static void main(String[] args) {

    String str1 = new String("test");
    String str2 = "test";

    System.out.println(str1.equals(str2));//true
    System.out.println(str1 == str2);     //false
}

Vous ne le verrez pas dans un programme réel, mais soyez prudent car c'est un déclencheur courant dans Java Silver.

Partie 3 Jugement insensible à la casse

Vous pouvez utiliser la méthode equalsIgnoreCase pour déterminer l'équivalence sans tenir compte de la casse. Cependant, je pense que la fréquence d'apparition est considérablement inférieure à celle des égaux.


public static void main(String[] args) {

    String str1 = "abc";
    String str2 = "ABC";

    System.out.println(str1.equals(str2));          //false
    System.out.println(str1.equalsIgnoreCase(str2));//true
}

c'est tout

Recommended Posts

Points à connaître avec Java Equals
Points à surveiller lors de la création d'un framework
Choses à surveiller lors de l'utilisation de Kmeans dans Deeplearning4j
Attention aux variables embarquées dans S2Dao
[Java] Points à noter sur l'inférence de type étendue dans Java 10
J'ai essayé de découvrir ce qui avait changé dans Java 9
[Ransack] Attention aux ransackable_scopes!
Éléments à prendre en compte lors de l'écriture de code en Java
Les débutants jouent à des jeux Janken en Java
Multithread pour s'adapter au modèle [Java]
[Pour les débutants] Exécutez Selenium sur Java
Comment apprendre JAVA en 7 jours
Enregistrer la sortie dans un fichier en Java
Comprendre equals et hashCode en Java
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Essayez d'implémenter Yuma en Java
Paramètres de débogage SSL dans Java
Points à noter dans les expressions conditionnelles
Comment concaténer des chaînes avec Java
[Pour les débutants] Exemple minimum pour mettre à jour RecyclerView avec DiffUtils en Java
[Note] Java: est-il nécessaire de remplacer les égaux pour le jugement d'égalité?
Choses à noter pour les nouveaux arrivants d'écrire du code lisible pendant le développement Java
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Essayez de résoudre Project Euler en Java
Facile à créer Slack Bot avec Java
Référence Java à comprendre dans la figure
Introduction à Java pour la première fois # 2
[Java] Résumez comment comparer avec la méthode equals
Premiers pas pour l'apprentissage profond en Java
Essayez d'implémenter l'ajout n-aire en Java
Points clés pour l'introduction de gRPC en Java
À propos de la procédure pour que Java fonctionne
Comment faire une conversion de base en Java
Diverses choses comme les indicateurs de bits en Java
Remplacez List <Optional <T >> par Optional <List <T >> en Java
Convertir des fichiers SVG en fichiers PNG en Java
Comment appliquer les conventions de codage en Java
Comment intégrer Janus Graph dans Java
Comment obtenir la date avec Java
Ajouter des notes de bas de page aux documents Word en Java
[Java Bronze] 5 problèmes à garder à l'esprit
[Java] [Pour les débutants] Comment insérer des éléments directement dans un tableau à deux dimensions
Exemple pour décompresser le fichier gz en Java
Mémo pour la migration de Java vers Kotlin
[Pour les débutants] Comment déboguer avec Eclipse
Ajouter l'attribut SameSite au cookie en Java
Pour mon fils qui a commencé à étudier Java avec "Introduction à Java" dans une main
[Java] Comment tester s'il est nul dans JUnit
Points à prendre en compte lors de l'écriture de Java
ChatWork4j pour l'utilisation de l'API ChatWork en Java
Techniques de lecture du code source Java dans Eclipse
Comment afficher une page Web en Java
Essayez de créer un babillard en Java
La solution pour NetBeans 8.2 ne fonctionne pas dans l'environnement Java 9
Comment obtenir une classe depuis Element en Java
Il ne semble pas y avoir d'autre-si en java