So sánh 2 xâu 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

So sánh chuỗi trong java là một trong những từ khóa được search nhiều nhất trên google về chủ đề so sánh chuỗi trong java. Trong bài viết này, xaydungweb.vn sẽ viết bài viết nói về làm thế nào để so sánh chuỗi trong java một cách nhanh nhất.

So sánh chuỗi trong java

Chúng ta đủ sức so sánh chuỗi trong java trên cơ sở nội dung và tham chiếu của nó.

Nó được sử dụng trong xác thực [bởi phương pháp equals[]], sắp đặt [theo công thức compareTo[]], so sánh tham chiếu[với toán tử ==], vv

Có ba mẹo để so sánh chuỗi trong java:

  1. dùng công thức equals[]
  2. sử dụng toán tử ==
  3. dùng công thức compareTo[]

phương pháp equals[] được sử dụng để so sánh nội dung của 2 chuỗi. Lớp String phân phối 2 mẹo equals[]:

  • 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 k phân biệt chữ hoa, chữ thường.

gợi ý 1:

?

1

2

3

4

5

6

7

8

9

10

11

public class Teststringcomparison1

public static void main[String args[]]

String s1 = "Hello";

String s2 = "Hello";

String s3 = new String["Hello"];

String s4 = "Hallo";

System.out.println[s1.equals[s2]];//true

System.out.println[s1.equals[s3]];//true

System.out.println[s1.equals[s4]];//false

Output:

gợi ý 2:

?

1

2

3

4

5

6

7

8

9

public class Teststringcomparison2

public static void main[String args[]]

String s1 = "Hello";

String s2 = "HELLO";

System.out.println[s1.equals[s2]];//false

System.out.println[s1.equalsIgnoreCase[s2]];//true

Output:

2] So sánh chuỗi bằng toán tử ==

Toán tử == được sử dụng để so sánh tham chiếu [không phải giá trị] của 2 chuỗi.

ví dụ 3:

?

1

2

3

4

5

6

7

8

9

public class Teststringcomparison3

public static void main[String args[]]

String s1 = "Hello";

String s2 = "Hello";

String s3 = new String["Hello"];

System.out.println[s1 == s2];//true [vì cả 2 cùng tham chiếu instance giống nhau]

System.out.println[s1 == s3];//false[vì s3 tham chiếu instance mà không ở trong Pool]

Output:

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

Giả sử s1 và s2 là hai biến chuỗi. Nếu:

  • s1 == s2 : 0
  • s1 > s2 : giá trị > 0
  • s1 < s2 : trị giá < 0

gợi ý 4:

?

1

2

3

4

5

6

7

8

public static void main[String args[]]

String s1 = "Hello";

String s2 = "Hello";

String s3 = "Java";

System.out.println[s1.compareTo[s2]];

System.out.println[s1.compareTo[s3]];

System.out.println[s3.compareTo[s1]];

Output:

0 -2 2

Nguồn: viettuts.vn

Video liên quan

Chủ Đề