So sánh chuỗi trong android

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.

So sánh chuỗi trong android

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:

So sánh chuỗi trong android

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

 Hàm compareTo(): so sánh 2 chuỗi có phân biệt chữ hoa chữ thường.

Hàm compareToIgnoreCase(): so sánh 2 chuỗi nhưng không phân biệt chữ hoa chữ thường.

Bài giải

public static void main(String[] args) { String chuoi1, chuoi2; int result; Scanner scanner = new Scanner(System.in); System.out.println("Nhập vào chuỗi thứ nhất: "); chuoi1 = scanner.nextLine(); System.out.println("Nhập vào chuỗi thứ hai: "); chuoi2 = scanner.nextLine(); System.out.println("Kết quả so sánh sử dụng hàm compareTo(): "); // so sánh 2 chuỗi sử dụng hàm compareTo() // compareTo(): so sánh có phân biệt chữ hoa chữ thường // nếu biến result < 0 thì chuỗi 1 < chuỗi 2 // nếu biến result > 0 thì chuỗi 1 > chuỗi 2 // nếu biến result == 0 thì chuỗi 1 = chuỗi 2 result = chuoi1.compareTo(chuoi2); if (result < 0) { System.out.println("Chuỗi " + chuoi1 + " nhỏ hơn " + chuoi2); } else if (result > 0) { System.out.println("Chuỗi " + chuoi1 + " lớn hơn " + chuoi2); } else { System.out.println("Chuỗi " + chuoi1 + " bằng " + chuoi2); } System.out.println("Kết quả so sánh sử dụng hàm compareToIgnoreCase(): "); // so sánh 2 chuỗi sử dụng hàm compareToIgnoreCase() // compareToIgnoreCase(): so sánh không phân biệt chữ hoa chữ thường // nếu biến result < 0 thì chuỗi 1 < chuỗi 2 // nếu biến result > 0 thì chuỗi 1 > chuỗi 2 // nếu biến result == 0 thì chuỗi 1 = chuỗi 2 result = chuoi1.compareToIgnoreCase(chuoi2); if (result < 0) { System.out.println("Chuỗi " + chuoi1 + " nhỏ hơn " + chuoi2); } else if (result > 0) { System.out.println("Chuỗi " + chuoi1 + " lớn hơn " + chuoi2); } else { System.out.println("Chuỗi " + chuoi1 + " bằng " + chuoi2); } }

Kết quả sau khi biên dịch chương trình:

So sánh chuỗi trong android

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

So sánh chuỗi trong android

Xem tất cả các bài viết về Java String: Vào Đây

Vấn đề: Làm thế nào để so sánh 2 chuỗi trong Java?


So sánh chuỗi trong android


Khi mới lập trình với Java rất dễ nhầm lẫn là sử dụng toán tử == để so sánh xem hai chuỗi có giống nhau không, tuy nhiên đó là không phải là cách làm đúng trong Java. Trong bài này mình sẽ trình bày đến các bạn các cách so sánh chuỗi đúng trong Java, từ cách phổ biến hay được dùng nhiều nhất. Ở cuối bài mình cũng giải thích tại sao không dùng toán tử == trong so sánh chuỗi với Java.

Lựa chọn 1: So sánh chuỗi trong Java với phương thức: equals

Phần lớn mình sử dụng khoảng 95% phương thức equals của lớp String. if (string1.equals(string2)) Phương thức equals nhìn vào 2 chuỗi, nếu từng ký tự trong chuỗi đó giống nhau thì 2 chuỗi đó giống nhau. Nhìn vào ví dụ sau, 2 chuỗi sẽ không bằng nhau vì từng ký tự trong chuỗi không bằng nhau (Hàm equals sẽ trả về false). Bạn chú ý ký tự in hoa và in thường là khác nhau nhé. String string1 = "Sinh Vien CNTT"; String string2 = "sinh vien cntt"; if (string1.equals(string2)) { // Dòng này sẽ không được in ra vì hai chuỗi không bằng nhau System.out.println("Hai chuỗi bằng nhau.") } Nhưng khi từng ký tự trong hai chuỗi giống nhau thì hàm equals sẽ trả về kết quả true nghĩa là hai chuỗi giống nhau, bạn xem ví dụ sau: String string1 = "Sinh Vien CNTT"; String string2 = "Sinh Vien CNTT"; if (string1.equals(string2)) { // Dòng này sẽ được in ra vì hai chuỗi bằng nhau System.out.println("Hai chuỗi bằng nhau."); } Lựa chọn 2: So sánh chuỗi trong Java với phương thức: equalsIgnoreCase Trong một số trường hợp bạn muốn việc kiểm tra hai chuỗi không kiểm tra ký tự là in hoa hay in thường thì dùng hàm equalsIgnoreCase của lớp String như sau: String string1 = "Sinh Vien CNTT"; String string2 = "sinh vien cntt"; if (string1.equalsIgnoreCase(string2)) { // Hai chuỗi bằng nhau vì ký tự in hoa bằng ký tự thường // Dòng này sẽ được in ra vì hai chuỗi bằng nhau System.out.println("Hai chuỗi bằng nhau."); } Lựa chọn 3: So sánh chuỗi trong Java với phương thức: compareTo Ngoài 2 cách trên còn có thể dùng hàm compareTo của lớp String, tuy nhiên cách này ít phổ biến. Nếu hai chuỗi giống nhau hàm compareTo sẽ trả về 0. Cách này cũng phân biệt chữ in hoa và thường. String string1 = "Sinh Vien CNTT"; String string2 = "sinh vien cntt"; if (string1.compareTo(string2) == 0) { // Dòng này không sẽ được in ra vì hai chuỗi không bằng nhau System.out.println("Hai chuỗi bằng nhau."); } Lựa chọn 4: So sánh chuỗi trong Java với phương thức: compareToIgnoreCase Cách này không phân biệt in hoa và in thường String string1 = "Sinh Vien CNTT"; String string2 = "sinh vien cntt"; if (string1.compareTo(string2) == 0) { // Dòng này sẽ được in ra vì hai chuỗi bằng nhau System.out.println("Hai chuỗi bằng nhau."); } Vì không nên sao sử dụng toán tử == trong so sánh chuỗi Java: Vì == là so sánh địa chỉ 2 đối tượng, còn equals là so sánh giá trị, nên trong trường hợp dưới đây dùng == sẽ không đúng. String s = new String("231"); if(s == "231") { // Dòng này sẽ không được in ra màn hình System.out.println("Phuong phap dung =="); } if(s.equals("231")) { // Dòng này sẽ được in ra màn hình System.out.println("Phuong phap dung equals"); } Cảm ơn các bạn đã theo dõi bài viết, mong nhận được sự góp ý từ các bạn.

Xem tất cả các bài viết về Java String: Vào Đây


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:

  • s1 == s2 thì trả về 0.
  • s1 > s2 thì trả về giá trị dương
  • s1 < s2 thì trả về giá trị âm
class Teststringcomparison4{ public static void main(String args[]){ String s1="hoclaptrinh"; String s2="hoclaptrinh"; String s3="Doan"; System.out.println(s1.compareTo(s2));//0 System.out.println(s1.compareTo(s3));//1(boi vi s1 > s3) System.out.println(s3.compareTo(s1));//-1(boi vi s3 < s1 ) } }

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="Vietjack"; String s2="Vietjack"; String s3=new String("Vietjack"); String s4="Vietjackteam"; System.out.println(s1.equals(s2));//true System.out.println(s1.equals(s3));//true System.out.println(s1.equals(s4));//false } }

Quảng cáo

Ví dụ 2

class Sosanhchuoi2{ public static void main(String args[]){ String s1="Vietjack"; String s2="VIETJACK"; 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="Vietjack"; String s2="Vietjack"; String s3=new String("Vietjack"); 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:

  • s1 == s2 thì trả về 0.

  • s1 > s2 thì trả về giá trị dương

  • s1 < s2 thì trả về giá trị âm

Quảng cáo

class Teststringcomparison4{ public static void main(String args[]){ String s1="Vietjack"; String s2="Vietjack"; String s3="Doan"; System.out.println(s1.compareTo(s2));//0 System.out.println(s1.compareTo(s3));//1(boi vi s1 > s3) System.out.println(s3.compareTo(s1));//-1(boi vi s3 < s1 ) } }

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

So sánh chuỗi trong android

So sánh chuỗi trong android

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.