Pourquoi la comparaison de classe de type chaîne Java (==) ne peut pas être utilisée

Comparaison des classes de chaînes

Il y a des occasions où vous utilisez une comparaison pour voir si les valeurs sont égales, comme dans une instruction if. Par exemple ...

【Q1】 Un programme qui vérifie si le nombre que vous entrez correspond à la réponse

Q1.java


import java.util.Scanner;

class Q1 {
	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);

		System.out.print("Entrez le numéro:");
		int n = stdIn.nextInt();

			if (n == 5) {
			System.out.print("Par");
			} else {
			System.out.print("De");
			}
	}
}

Dans ce cas, il s'agit d'une comparaison de nombres de type int. Vous pouvez comparer en utilisant ==. Maintenant, regardons le cas suivant comme une comparaison de chaînes de caractères.

【Q2】 Programme mystère

Q1.java


import java.util.Scanner;

class Q2 {
	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);

		System.out.print("Quelle est la matière première du tofu? :");
		String n = stdIn.next();

			if (judge.equals("soja")) {
			System.out.print("Par");
			} else {
			System.out.print("De");
			}
	}
}

J'utilise égal au lieu de == pour la comparaison. La raison de l'égalité est ...

Si vous utilisez == dans une comparaison de type de classe (type de référence), ce n'est pas le contenu Ce sera une comparaison de "l'adresse" qui contient les données.


Qiita用_equalsの比較1.PNG Qiita用_equalsの比較2.PNG Qiita用_equalsの比較3.PNG

Recommended Posts

Pourquoi la comparaison de classe de type chaîne Java (==) ne peut pas être utilisée
[Java] Comparaison des chaînes de caractères et && et ||
Parce que getSupportLoaderManager ne peut pas être utilisé
Java Stream ne peut pas être réutilisé.
[Java] Comparaison de vitesse de combinaison de chaînes
CentOS7 VirtualBOX yum ne peut pas être utilisé
Impossible d'installer Java sur Ubuntu 13.04
[Java] Comparaison correcte du type String
Pourquoi Java Vector n'est pas utilisé
Notez que les propriétés système, y compris JAXBContext, ne peuvent pas être utilisées dans Java11
Concernant la comparaison d'équivalence de type de chaîne en Java
Chaîne Java
Code Java qui ne peut pas être utilisé depuis Kotlin (pour les sessions d'étude en interne)
[Java] Les variables déclarées à l'intérieur de l'instruction `for` ne peuvent pas être utilisées en dehors du bloc` instruction for`
L'histoire de la comparaison de chaînes de bas niveau en Java
[Java] Scènes qui ne peuvent pas être réaffectées (essentiellement définitives)
[Solution] Java ne peut pas être installé sur Windows 10 + ATOK 2017
La fonction modifiée de kotlin ne peut pas être appelée depuis java.
[Java] Remplissage de la chaîne de caractères
Comparaison des chaînes MyBatis
[Java] Comparaison de cartes
Traitement des chaînes Java
Comparaison du framework Java
Chaîne divisée (Java)
Veuillez noter que Spring Boot + Tomcat 8.5.8 ne peut pas être utilisé!
Tomcat ne peut pas être démarré en raison d'un changement de version de Java
Systemctl ne peut pas être utilisé sur Ubuntu dans un conteneur Docker
[Java] Comparaison de la vitesse d'exécution de la jointure de chaîne (+ opérateur vs StringBuilder)
Scala String peut être utilisé pour plus que de simples méthodes java.lang.String
[Java] Quand var doit être utilisé et quand il ne doit pas être utilisé
[Java 8] Méthode de tri par ordre alphabétique et par ordre de longueur de chaîne de caractères pouvant être utilisée dans les tests de codage