Warum der Klassenvergleich vom Typ Java String (==) nicht verwendet werden kann

String-Klassenvergleich

Es gibt Fälle, in denen Sie einen Vergleich verwenden, um festzustellen, ob die Werte gleich sind, z. B. in einer if-Anweisung. Zum Beispiel ...

【Q1】 Ein Programm, das prüft, ob die von Ihnen eingegebene Nummer mit der Antwort übereinstimmt

Q1.java


import java.util.Scanner;

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

		System.out.print("Geben Sie die Nummer ein:");
		int n = stdIn.nextInt();

			if (n == 5) {
			System.out.print("Pro");
			} else {
			System.out.print("aus");
			}
	}
}

In diesem Fall handelt es sich um einen Vergleich der int-Typennummern. Sie können mit == vergleichen. Betrachten wir nun den folgenden Fall als Vergleich der Zeichenketten.

【Q2】 Mystery-Programm

Q1.java


import java.util.Scanner;

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

		System.out.print("Was ist der Rohstoff für Tofu? ::");
		String n = stdIn.next();

			if (judge.equals("Soja")) {
			System.out.print("Pro");
			} else {
			System.out.print("aus");
			}
	}
}

Ich verwende Equals zum Vergleich anstelle von ==. Der Grund für Gleichheit ist ...

Wenn Sie == in einem Vergleich von Klassentypen (Referenztypen) verwenden, ist dies nicht der Inhalt Es wird ein Vergleich der "Adresse" sein, die die Daten enthält.


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

Recommended Posts

Warum der Klassenvergleich vom Typ Java String (==) nicht verwendet werden kann
[Java] Vergleich von Zeichenketten und && und ||
Weil getSupportLoaderManager nicht verwendet werden kann
Java Stream kann nicht wiederverwendet werden.
[Java] Geschwindigkeitsvergleich der Zeichenfolgenkombination
CentOS7 VirtualBOX yum kann nicht verwendet werden
Java kann unter Ubuntu 13.04 nicht installiert werden
[Java] Korrekter Vergleich des String-Typs
Warum Java Vector nicht verwendet wird
Beachten Sie, dass Systemeigenschaften einschließlich JAXBContext in Java11 nicht verwendet werden können
In Bezug auf den Vergleich der Zeichenfolgentypäquivalenz in Java
Java-Zeichenfolge
Java-Code, der nicht von Kotlin verwendet werden kann (für interne Lernsitzungen)
[Java] Variablen, die innerhalb der `for-Anweisung` deklariert sind, können nicht außerhalb des` for-Anweisungsblocks` verwendet werden
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Szenen, die nicht neu zugewiesen werden können (im Wesentlichen endgültig)
[Lösung] Java kann unter Windows 10 + ATOK 2017 nicht installiert werden
Die geänderte Funktion von kotlin kann nicht von Java aus aufgerufen werden.
[Java] Auffüllen von Zeichenfolgen
MyBatis-Zeichenfolgenvergleich
[Java] Kartenvergleich
Java-String-Verarbeitung
Java Framework Vergleich
Geteilter String (Java)
Bitte beachten Sie, dass Spring Boot + Tomcat 8.5.8 nicht verwendet werden kann!
Tomcat kann aufgrund einer Änderung der Java-Version nicht gestartet werden
Systemctl kann unter Ubuntu nicht in einem Docker-Container verwendet werden
[Java] Vergleich der Ausführungsgeschwindigkeit des String-Joins (+ Operator vs StringBuilder)
Scala String kann nicht nur für java.lang.String-Methoden verwendet werden
[Java] Wann var verwendet werden soll und wann nicht
[Java 8] Sortiermethode in alphabetischer Reihenfolge und Reihenfolge der Zeichenkettenlänge, die für Codierungstests verwendet werden kann