Menu
Coddy logo textTech

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). Zwraca true, jeśli ciągi znaków mają te same znaki w tej samej kolejności, w przeciwnym razie false. Ta metoda rozróżnia wielkość liter.
  • equalsIgnoreCase(String other): Podobnie jak equals, ale nie uwzględnia wielkości liter. Zwraca true, jeśli ciągi znaków zawierają te same znaki, niezależnie od wielkości liter, a w przeciwnym razie false.
  • 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 jak compareTo, 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); // 0
challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie compareStrings, która przyjmuje dwa ciągi znaków jako dane wejściowe i wykonuje następujące porównania:

  1. Sprawdza, czy dwa ciągi znaków są równe, używając equals, i wyświetla wynik.
  2. Sprawdza, czy dwa ciągi znaków są równe (bez uwzględniania wielkości liter), używając equalsIgnoreCase, i wyświetla wynik.
  3. Porównuje dwa ciągi znaków, używając compareTo, i wyświetla wynik.
  4. 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: 0

Spró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);
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Java online