Menu
CoddyTech

So sánh chuỗi

Thuộc phần Nền tảng cơ bản trong hành trình Java của Coddy. Bài học 70 trên 73.

Trong Java, so sánh chuỗi không đơn giản như so sánh các kiểu dữ liệu nguyên thủy như số nguyên hoặc ký tự. Bạn không thể dùng toán tử == để kiểm tra hai chuỗi có bằng nhau hay không, vì chuỗi là đối tượng và == sẽ so sánh địa chỉ bộ nhớ của chúng chứ không phải nội dung. Thay vào đó, bạn cần dùng các phương thức cụ thể của lớp String để so sánh các ký tự thực tế bên trong chuỗi.

Dưới đây là các phương thức chính để so sánh chuỗi:

  • equals(Object other): So sánh chuỗi với một đối tượng khác, thường là một chuỗi khác. Trả về true nếu hai chuỗi có cùng các ký tự theo cùng thứ tự, nếu không thì trả về false. Phương thức này phân biệt chữ hoa và chữ thường.
  • equalsIgnoreCase(String other): Tương tự equals, nhưng không phân biệt chữ hoa chữ thường. Trả về true nếu các chuỗi (string) có cùng ký tự, bất kể chữ hoa hay chữ thường, nếu không thì trả về false.
  • compareTo(String other): So sánh hai chuỗi theo thứ tự từ điển (dựa trên giá trị Unicode của chúng). Trả về 0 nếu hai chuỗi bằng nhau, một số âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ hai và một số dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ hai. Phương thức này phân biệt chữ hoa chữ thường.
  • compareToIgnoreCase(String other): Tương tự compareTo, nhưng không phân biệt chữ hoa chữ thường.

Đây là một ví dụ:

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); // giá trị âm
int cmp3 = str4.compareTo(str1); // giá trị dương
int cmp4 = str1.compareToIgnoreCase(str3); // 0
challenge icon

Thử thách

Dễ

Tạo một phương thức tên là compareStrings, nhận hai chuỗi làm đầu vào và thực hiện các phép so sánh sau:

  1. Kiểm tra xem hai chuỗi có bằng nhau không bằng cách dùng equals rồi in ra kết quả.
  2. Kiểm tra xem hai chuỗi có bằng nhau không, không phân biệt chữ hoa chữ thường, bằng cách dùng equalsIgnoreCase rồi in ra kết quả.
  3. So sánh hai chuỗi bằng cách dùng compareTo rồi in ra kết quả.
  4. So sánh hai chuỗi, không phân biệt chữ hoa chữ thường, bằng cách dùng compareToIgnoreCase rồi in ra kết quả.

Ví dụ đầu ra với hai chuỗi đầu vào HELLO và hello:

HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0

Tự làm thử

import java.util.Scanner;

public class Main {
    public static void compareStrings(String str1, String str2) {
        // Viết code của bạn ở đây
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();
        compareStrings(str1, str2);
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Nền tảng cơ bản

Tự luyện tập: Trình biên dịch Java online