So sánh độ dài 2 chuỗi trong Java

Ở bài trước ta đã tìm hiểu về những phương thức xử ký chuỗi. Nó là những phương thức quan trọng thường xuyên được sử dụng và kết hợp với các phương thức so sánh để đạt hiệu quả cao nhất trong một chương trình cụ thể. Và bài này ta sẽ tìm hiểu kỹ hơn về việc so sánh chuỗi trong Java

1. Các cách so sánh chuỗi trong Java

Chuỗi [String] trong Java cung cấp nhiều khái niệm đa dạng giúp ta thao tác và xử lý với chuỗi như so sánh, cắt, nối, tìm độ dài, thay thế, tìm chuỗi con, …. Trong Java, về cơ bản chuỗi là một đối tượng mà biểu diễn dãy các giá trị char. Chúng ta có thể so sánh chuỗi trong Java bằng cách dựa trên cơ sở nội dung và tham chiếu của nó.

Có 3 cách cở bản và hay được sử dụng nhất trong việc so sánh chuỗi trong Java là:

  • Sử dụng phương thức equals[]
  • Sử dụng toán tử ==
  • Sử dụng phương thức compareTo[]

Còn những cách khác nâng cao và ít sử dụng hơn thì các bạn có thể tự tìm hiểu thêm nhé!

2. Sử dụng toán từ == để so sánh chuỗi

Toán từ == sử dụng để so sánh tham chiếu[không phải tham trị] của 2 chuỗi. Khi ta so sánh 2 đối tượng tham chiếu theo toán tử == , có nghĩa là so sánh vị trí mà 2 đối tượng tham chiếu này trỏ tới. Về bản chất là kiểm tra xem 2 tham chiếu đó có cùng trỏ tới một thực thể trên bộ nhớ hay không.

Ví dụ:

public class Main { public static void main[String[] args] { // Chú ý: Với String 2 cách khởi tạo đối tượng dưới đây là không giống nhau: String str1 = "String 1"; String str2 = new String["String 1"]; // Toán tử 'new' tạo ra vùng bộ nhớ [1] // chứa String "Laptrinhtudau" // Và 's1' là một tham chiếu trỏ đến vùng [1]. String s1 = new String["Laptrinhtudau"]; // Toán tử 'new' tạo ra vùng bộ nhớ [2] // Chứa String "laptrinhtudau" // Và 's2' là một tham chiếu trỏ đến [2] String s2 = new String["laptrinhtudau"]; // Sử dụng toán tử == so sánh 's1' và 's2'. // Kết quả ra false. // Nó rõ ràng khác với suy nghĩ của bạn. // Lý do là với kiểu tham chiếu // toán tử == so sánh vị trí trên bộ nhớ mà chúng trỏ tới. boolean e1 = [s1 == s2]; // false System.out.println["s1 == s2 ? " + e1]; // Không có toán tử 'new' nào. // Java tạo ra một tham chiếu có tên 'obj' // Và trỏ tới vùng bộ nhớ mà 's1' đang trỏ tới. Object obj = s1; // 2 tham chiếu 'obj' và 's1' đang cùng trỏ tới 1 vùng bộ nhớ. // Kết quả trả về là true. boolean e2 = [obj == s1]; // true System.out.println["obj == s1 ? " + e2]; } }

Kết quả

s1 == s2 ? false obj == s1 ? true

3. So sánh chuỗi bằng phương thức equals[]

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 2 phương thức equals[] để so sánh 2 chuỗi:

  • public boolean equals[Object another]: so sánh 2 chuỗi có phân biệt chữ hoa, chữ thường.
  • public boolean equalsIgnoreCase[String another]: so sánh 2 chuỗi không phân biệt chữ hoa, chữ thường và bỏ qua sự khác biệt về kiểu

Ví dụ:

public class Main { public static void main[String args[]] { String s1 = "laptrinhtudau"; String s2 = "laptrinhtudau"; String s3 = new String["PHP"]; String s4 = "Java"; System.out.println[s1.equals[s2]]; System.out.println[s1.equals[s3]]; System.out.println[s1.equals[s4]]; } }

Kết quả

true false false public class Main { public static void main[String args[]] { String s1 = "Laptrinhtudau"; String s2 = "LAPTRINHTUDAU"; System.out.println[s1.equals[s2]]; System.out.println[s1.equalsIgnoreCase[s2]]; } }

Kết quả

false true

4. So sánh chuỗi bằng phương thức conpareTo[]

Phương thức compareTo[] so sánh các giá trị theo thứ tự từ điển và trả về một giá trị số nguyên mô tả nếu chuỗi đầu tiên nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai. Ta có thể hiểu cách nó so sánh như sau:

  • string1 > string 2 : trả về giá trị lớn hơn 0
  • string 1 < string 2 : trả về giá trị nhỏ hơn 0
  • string 1 == string 2 : trả về 0

Ví dụ:

class Teststringcomparison4{ public static void main[String args[]]{ String s1="laptrinhtudau"; String s2="laptrinhtudau"; String s3="Java"; System.out.println[s1.compareTo[s2]]; System.out.println[s1.compareTo[s3]]; System.out.println[s3.compareTo[s1]]; } }

Kết quả

0 34 -34

5. So sánh chuỗi bằng phương thức Object.equals[]

Sử dụng phương thức Object.equals[] để so sánh chuỗi sẽ trả về True nếu các đối số bằng nhau và ngược lại. Nếu đối số không bằng nhau thì sẽ trả về False. Nếu cả 2 đối số đều rỗng thì kết quả trả về là True. Nếu một đối số là rỗng thì kết quả trả về là False. Mặt khác, đẳng thức được xác định bằng cách sử dụng phương thức equals[] của đối số đầu tiên.

Cú pháp : public static boolean equals[Object a, Object b]

Ở đây a và b đều là các đối tượng chuỗi sẽ được so sánh.

Ví dụ:

import java.util.*; public class Main { public static void main[String args[]] { String string1 = new String["Lập trình từ đầu"]; String string2 = new String["Lập trình"]; String string3 = new String["Lập trình"]; String string4 = null; String string5 = null; System.out.println["So sánh " + string1 + " và " + string2 + " : " + Objects.equals[string1, string2]]; System.out.println["So sánh " + string2 + " và " + string3 + " : " + Objects.equals[string2, string3]]; System.out.println["So sánh " + string1 + " và " + string4 + " : " + Objects.equals[string1, string4]]; System.out.println["So sánh " + string4 + " và " + string5 + " : " + Objects.equals[string4, string5]]; } }

Kết quả

So sánh Lập trình từ đầu và Lập trình : false So sánh Lập trình và Lập trình : true So sánh Lập trình từ đầu và null : false So sánh null và null : true

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:

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:

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

Cùng chuyên mục:

Trong bài viết này chúng ta sẽ tìm hiểu về phương thức length[] trong Java String. Đây là một phương thức được sử dụng để trả về độ dài của chuỗi.

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

Phương thức length[] được sử dụng khá nhiều trong các bài tập về chuỗi cũng như về mảng.

Cú pháp hàm length[] trong Java String

Trước tiên ta sẽ tìm hiểu về cú pháp của phương thức length[] đã nhé:

Ở đây, string là một đối tượng của lớp String và phương thức length [] không nhận bất kỳ tham số nào.

Bài viết này được đăng tại [free tuts .net]

Phương thức length[] trả về độ dài của chuỗi đã cho.

Ví dụ: ta cần tính độ dài của chuổi str = "Freetuts.net" thì thực hiện như sau:

str.length[]; //hoặc "Freetuts.net".length[];

Cách dùng hàm length[] trong Java String

Trong phần này mình sẽ thực hiện một ví dụ sử dụng phương thức length[] để minh họa cho cách sử dụng của nó nhé. Cụ thể mình sẽ thực hiện tính độ dài của nhiều chuỗi khác nhau để các bạn có thể so sánh.

class Main { public static void main[String[] args] { //khai báo hai chuỗi str1 và str2 String str1 = "Java"; String str2 = ""; //sử dụng phương thức length[] để tính độ dài của các chuỗi khác nhau, sau đó hiển thị ra màn hình System.out.println["Độ dài của chuỗi str1 là: " + str1.length[]]; // 4 System.out.println["Độ dài của chuỗi str2 là: " + str2.length[]]; // 0 System.out.println["Độ dài của chuỗi \"Java\" là: "+ "Java".length[]]; // 4 System.out.println["Độ dài của chuỗi \"Freetuts.net\" là: "+"Freetuts.net".length[]]; // 5 System.out.println["Độ dài của chuỗi \"Learn Java\" là: "+"Learn Java".length[]]; // 10 System.out.println["---------------------------------------"]; System.out.println["Chương trình này được đăng tại Freetuts.net"]; } }

Kết quả:

Như vậy là chúng ta đã tìm hiểu xong phương thức split[] trong Java. Các bài tiếp theo mình sẽ tiếp tục giới thiệu các phương thức khác trong Java, các bạn chú ý theo dõi nhé !!!

Danh sách hàm xử lý chuỗi trong Java

Cùng chuyên mục:

Video liên quan

Chủ Đề