Porównywanie ciągów znaków
Część sekcji Podstawy ścieżki Java w Coddy. Lekcja 70 z 73.
W Javie porównywanie ciągów znaków nie jest tak proste jak porównywanie typów danych prostych, takich jak liczby całkowite czy znaki. Nie możesz użyć operatora == do porównania ciągów znaków pod kątem równości, ponieważ ciągi znaków są obiektami, a == porównywałby ich adresy w pamięci, a nie ich zawartość. Zamiast tego musisz użyć określonych metod udostępnianych przez klasę String, aby porównać rzeczywiste znaki w ciągach znaków.
Oto podstawowe metody porównywania ciągów znaków:
equals(Object other): Porównuje ciąg znaków z innym obiektem (zwykle innym ciągiem znaków). Zwracatrue, jeśli ciągi znaków mają te same znaki w tej samej kolejności, w przeciwnym raziefalse. Ta metoda rozróżnia wielkość liter.
equalsIgnoreCase(String other): Podobnie jakequals, ale nie uwzględnia wielkości liter. Zwracatrue, jeśli ciągi znaków zawierają te same znaki, niezależnie od wielkości liter, a w przeciwnym raziefalse.
compareTo(String other): Porównuje dwa ciągi znaków leksykograficznie (na podstawie ich wartości Unicode). Zwraca 0, jeśli ciągi znaków są równe, liczbę ujemną, jeśli pierwszy ciąg znaków jest mniejszy od drugiego, oraz liczbę dodatnią, jeśli pierwszy ciąg znaków jest większy od drugiego. Ta metoda rozróżnia wielkość liter.
compareToIgnoreCase(String other): Podobnie jakcompareTo, ale ignoruje wielkość liter.
Oto przykład:
String str1 = "hello";
String str2 = "hello";
String str3 = "HELLO";
String str4 = "world";
boolean eq1 = str1.equals(str2); // true
boolean eq2 = str1.equals(str3); // false
boolean eq3 = str1.equalsIgnoreCase(str3); // true
int cmp1 = str1.compareTo(str2); // 0
int cmp2 = str1.compareTo(str4); // wartość ujemna
int cmp3 = str4.compareTo(str1); // wartość dodatnia
int cmp4 = str1.compareToIgnoreCase(str3); // 0Wyzwanie
ŁatwyUtwórz metodę o nazwie compareStrings, która przyjmuje dwa ciągi znaków jako dane wejściowe i wykonuje następujące porównania:
- Sprawdza, czy dwa ciągi znaków są równe, używając
equals, i wyświetla wynik. - Sprawdza, czy dwa ciągi znaków są równe (bez uwzględniania wielkości liter), używając
equalsIgnoreCase, i wyświetla wynik. - Porównuje dwa ciągi znaków, używając
compareTo, i wyświetla wynik. - Porównuje dwa ciągi znaków (bez uwzględniania wielkości liter), używając
compareToIgnoreCase, i wyświetla wynik.
Przykładowy wynik dla ciągów wejściowych HELLO i hello:
HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0Spróbuj swoich sił
import java.util.Scanner;
public class Main {
public static void compareStrings(String str1, String str2) {
// Wpisz tutaj swój kod
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
String str2 = scanner.nextLine();
compareStrings(str1, str2);
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory część 1
Operatory arytmetyczneOperator moduloInkrementacja/dekrementacjaPostinkrementacja/postdekrementacjaSkrócone operatory arytmetyczneOperatory porównaniaPorównywanie ciągów znaków7Podstawowe wejście i wyjście
Metody System.outFormatowanie wyjściaKlasa ScannerPowtórka – do 120Powtórka – prawda czy fałsz10Metody (funkcje)
Deklarowanie metodParametry metodTypy zwracanePrzeciążanie metodPowtórzenie – funkcja SigmaPowtórzenie – funkcja walidującaMetody void13Operacje na ciągach znaków
Metody ciągów znaków — część 1Metody ciągów znaków — część 2Formatowanie ciągów znakówPorównywanie ciągów znaków5Operatory — część 2
Operatory logiczne — część 1Operatory logiczne — część 2Powtórka — podstawy logikiOperatory logiczne — część 3Operatory logiczne — część 43Zmienne — część 2
StałeKonwencje nazewnictwaPodsumowanie — inicjalizacja zmiennychKonwersja typów — część 1Konwersja typów — część 26Podejmowanie decyzji
Instrukcja ifIf - elseInstrukcja switchOperator trójargumentowyPowtórka: if - elseZagnieżdżone if - elsePoćwicz samodzielnie: Kompilator Java online