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ềtruenế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ềtruenế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); // 0Thử 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:
- Kiểm tra xem hai chuỗi có bằng nhau không bằng cách dùng
equalsrồi in ra kết quả. - 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
equalsIgnoreCaserồi in ra kết quả. - So sánh hai chuỗi bằng cách dùng
compareTorồi in ra kết quả. - So sánh hai chuỗi, không phân biệt chữ hoa chữ thường, bằng cách dùng
compareToIgnoreCaserồ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: 0Tự 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);
}
}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
4Toán tử phần 1
Toán tử số họcToán tử moduloTăng/giảmTăng/giảm sauPhép rút gọn số họcToán tử so sánhSo sánh chuỗi7Nhập xuất cơ bản
Các phương thức System.outĐịnh dạng đầu raLớp ScannerÔn tập: đến 120Ôn tập: đúng hay sai5Toán tử, phần 2
Toán tử logic, phần 1Toán tử logic, phần 2Ôn tập: logic cơ bảnToán tử logic, phần 3Toán tử logic, phần 411Kiến thức cơ bản về mảng
Khai báo mảngTruy cập phần tửChỉnh sửa mảngPhương thức của mảngÔn tập: mảng tíchÔn tập: mảng đảo ngượcTự luyện tập: Trình biên dịch Java online