So sánh 2 chuỗi string trong java năm 2024

Viết chương trình sử dụng các hàm có sẵn trong chuỗi để so sánh 2 chuỗi bất kỳ nhập từ bàn phím và hiển thị kết quả so sánh ra màn hình.

Bài giải

---- ######## ----

Trong bài tập này, tôi sẽ giới thiệu đến các bạn một hàm mới dùng để so sánh 2 chuỗi đó là hàm compareToIgnoreCase(). Ở phần bài học, tôi đã giới thiệu hàm compareTo() cũng dùng để so sánh 2 chuỗi. Vậy trong ngôn ngữ lập trình Java thì hai hàm này cũng dùng để so sánh chuỗi nhưng nó có sự khác nhau như sau:

Chúng ta có thể so sánh chuỗi trong Java dựa trên cơ sở nội dung và tham chiếu. Nó được sử dụng trong sự xác nhận bởi phương thức equal(), sắp xếp bởi phương thức compareTo(), so khớp tham chiếu bởi toán tử ==, …

So sánh chuỗi bởi phương thức equals() trong Java

Phương thức equals() so sánh nội dung ban đầu của chuỗi. Nó so sánh tính cân bằng của các giá trị chuỗi. Lớp String cung cấp hai phương thức:

  • public boolean equals(Object khac) so sánh chuỗi này với object đã cho.
  • public boolean equalsIgnoreCase(String khac) so sánh chuỗi này với chuỗi khác, bỏ qua sự khác biệt về kiểu.

Ví dụ 1

class Sosanhchuoi1{  
 public static void main(String args[]){  
   String s1="hoclaptrinh";  
   String s2="hoclaptrinh";  
   String s3=new String("hoclaptrinh");  
   String s4="hoclaptrinhteam";  
   System.out.println(s1.equals(s2));//true  
   System.out.println(s1.equals(s3));//true  
   System.out.println(s1.equals(s4));//false  
 }  
}  

Ví dụ 2

class Sosanhchuoi2{  
 public static void main(String args[]){  
   String s1="hoclaptrinh";  
   String s2="hoclaptrinh";  
   System.out.println(s1.equals(s2));//false  
   System.out.println(s1.equalsIgnoreCase(s3));//true  
 }  
}  

So sánh chuỗi với toán tử == trong Java

Toán tử == trong Java so sánh các tham chiếu chứ không phải so sánh các giá trị. Ví dụ:

class Sosanhchuoi3{  
 public static void main(String args[]){  
   String s1="hoclaptrinh";  
   String s2="hoclaptrinh";  
   String s3=new String("hoclaptrinh");  
   System.out.println(s1==s2);//true (boi vi ca hai cung tham chieu toi cung instance)  
   System.out.println(s1==s3);//false(boi vi s3 tham chieu toi instance duoc tao khong phai trong Pool)  
 }  
}   

So sánh chuỗi bởi phương thức compareTo() trong Java

Phương thức compateTo() so sánh các giá trị theo từ điển và trả về một giá trị nguyên miêu tả rằng nếu chuỗi đầu tiên là nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai. Giả sử s1 và s2 là hai chuỗi. Nếu:

so với() được sử dụng để so sánh hai chuỗi theo từ điển. Mỗi ký tự của cả hai chuỗi đều được chuyển đổi thành giá trị Unicode. Tuy nhiên, nếu cả hai chuỗi bằng nhau thì phương thức này trả về 0, nếu không nó chỉ cho kết quả giá trị âm hoặc dương.

Phương thức so sánh chuỗi Java() được định nghĩa trong giao diện java.lang.Comparable

Cú pháp: Cách viết phương thức so sánh() trong Java:

public int compareTo(String str)

Đầu vào tham số:

str – Hàm so sánh() trong Java chỉ chấp nhận một kiểu dữ liệu Chuỗi đầu vào.

Trả về phương thức:

Phương thức Java CompareTo() này trả về một kiểu dữ liệu int dựa trên sự so sánh từ điển giữa hai chuỗi.

  • trả về < 0 thì Chuỗi gọi phương thức sẽ được ưu tiên theo từ điển
  • trả về == 0 thì hai chuỗi tương đương về mặt từ điển
  • trả về > 0 thì tham số được truyền cho phương thức Java CompareTo() sẽ được ưu tiên về mặt từ điển.

Phương thức so sánh chuỗi JavaTo() Ví dụ:

so sánh() Ví dụ Java 1:

public class Sample_String {

public static void main(String[] args) {
    String str_Sample = "a";
    System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
    str_Sample = "b";
    System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
    str_Sample = "b";
    System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
}
}

Sản lượng mong đợi

Compare To 'a' b is : -1 Compare To 'b' a is : 1 Compare To 'b' b is : 0

Ở đây,

  • Ký tự a đứng trước b theo thứ tự bảng chữ cái. Do đó đầu ra là -1
  • Ký tự b đứng sau a theo thứ tự bảng chữ cái. Do đó đầu ra là 1
  • Ký tự b tương đương, do đó đầu ra là 0.

Bạn có thể sử dụng phương thức Sử dụng “compareToIgnoreCase” trong trường hợp bạn không muốn kết quả phân biệt chữ hoa chữ thường. Hãy cùng tìm hiểu với Ví dụ Java CompareTo().

so sánh() Ví dụ Java 2:

public class Sample_String {

public static void main(String[] args) {
    //Compare to a String
    String str_Sample = "RockStar";
    System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
    //Compare to - Ignore case
    System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));
}
}

Sản lượng mong đợi

Compare To 'ROCKSTAR': -32 Compare To 'ROCKSTAR' - Case Ignored: 0

Khi nào nên sử dụng phương thức so sánh() trong Java?

Phương thức so sánh chuỗi JavaTo() được sử dụng để thực hiện sắp xếp tự nhiên trên chuỗi. Sắp xếp tự nhiên có nghĩa là thứ tự sắp xếp áp dụng trên đối tượng, ví dụ: thứ tự từ vựng cho Chuỗi, thứ tự số cho Sắp xếp số nguyên, v.v.

Thứ tự từ vựng không gì khác ngoài thứ tự bảng chữ cái. Phương thức Java CompareTo() thực hiện so sánh tuần tự các chữ cái trong chuỗi có cùng vị trí.

Trong phương pháp này, nếu chuỗi đầu tiên luôn cao hơn về mặt từ điển so với chuỗi thứ hai thì nó sẽ trả về một số dương.