So sánh từng ký tự trong Java

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

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?




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


Video liên quan

Chủ Đề