Toán tử == và khác và giống nhau như thế nào

Nói chung, cả hai phương thức equal[] và toán tử == trong Java đều được sử dụng để so sánh các đối tượng để kiểm tra sự bằng nhau nhưng đây là một số khác biệt giữa hai:

  1. Sự khác biệt chính giữa phương thức .equals [] và toán tử == là:  một cái là phương thức còn một cái là toán tử. 
  2. Chúng ta có thể sử dụng các toán tử == để so sánh tham chiếu [ so sánh địa chỉ ] và phương thức .equals [] để so sánh nội dung . Nói một cách đơn giản, == kiểm tra xem cả hai đối tượng có trỏ đến cùng một vị trí bộ nhớ hay không trong khi .equals [] ước tính so sánh các giá trị trong các đối tượng.
  3. Nếu một lớp không ghi đè phương thức bằng , thì theo mặc định, nó sử dụng phương thức bằng [Object o] của lớp cha gần nhất đã ghi đè phương thức này. 
  4. Ví dụ đoạn code:

        public static void main[String[] args]

            String s1 = new String["CodeLean.vn"];

            String s2 = new String["CodeLean.vn"];

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

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

    false true

    Giải thích: Ở đây chúng ta đang tạo hai đối tượng là s1 và s2.

    • Cả s1 và s2 đều trỏ đến các đối tượng khác nhau.
    • Khi chúng ta sử dụng toán tử == để so sánh s1 và s2 thì kết quả là sai vì cả hai đều có địa chỉ khác nhau trong bộ nhớ.
    • Sử dụng bằng, kết quả là đúng vì nó chỉ so sánh các giá trị được cho trong s1 và s2.

Bây giờ chúng ta sẽ cùng tìm hiểu chi tiết hơn về các toán tử

Chúng ta có thể áp dụng các toán tử đẳng thức cho mọi kiểu nguyên thủy bao gồm cả kiểu boolean. Chúng ta cũng có thể áp dụng các toán tử đẳng thức cho các loại đối tượng.

    public static void main[String[] args]

        System.out.println[10 == 20];

        System.out.println['a' == 'b'];

        System.out.println['a' == 97.0];

        System.out.println[true == true];

false false true true

Nếu chúng ta áp dụng == cho các loại đối tượng thì sẽ có sự tương thích giữa các loại đối số [có thể là con với cha mẹ hoặc cha mẹ với con hoặc cùng loại]. Nếu không, chúng ta sẽ nhận được lỗi biên dịch.

    public static void main[String[] args]

        String s = new String["CodeLean"];

        System.out.println[t == o];

        System.out.println[o == s];

       // System.out.println[t==s];

false false // lỗi: loại không thể so sánh: Thread và String

Trong Java, phương thức chuỗi equal[] so sánh hai chuỗi đã cho dựa trên dữ liệu / nội dung của chuỗi. Nếu tất cả nội dung của cả hai chuỗi đều giống nhau thì nó trả về true. Nếu tất cả các ký tự không khớp thì nó trả về false.

    public static void main[String[] args]

        Thread t1 = new Thread[];

        Thread t2 = new Thread[];

        String s1 = new String["CodeLean.vn"];

        String s2 = new String["CodeLean.vn"];

        System.out.println[t1 == t3];

        System.out.println[t1 == t2];

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

        System.out.println[t1.equals[t2]];

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

true fail fail fail true

Giải thích: Ở đây chúng tôi đang sử dụng phương thức .equals để kiểm tra xem hai đối tượng có chứa cùng một dữ liệu hay không.

  • Trong ví dụ trên, chúng tôi đang tạo 3 đối tượng Thread và 2 đối tượng String.
  • Trong so sánh đầu tiên, chúng tôi đang kiểm tra xem t1 == t3 hay không. Như chúng ta biết rằng cả t1 và t3 đều trỏ đến cùng một đối tượng , đó là lý do tại sao nó trả về true.
  • Trong lần so sánh thứ hai, chúng tôi đang sử dụng toán tử == để so sánh các Đối tượng chuỗi chứ không phải nội dung của các đối tượng. Ở đây, cả hai đối tượng đều khác nhau và do đó, kết quả của sự so sánh này là
  • Khi chúng ta so sánh 2 đối tượng String bằng toán tử .equals [] thì chúng ta sẽ kiểm tra xem cả hai đối tượng có chứa cùng một dữ liệu hay không.
  • Cả hai đối tượng s1, s2 đều chứa cùng một Chuỗi là CodeLean.vn nên kết quả trả về đúng.

Nếu bạn không chắc sự khác biệt giữa == và === trong JavaScript, bạn không đơn độc. Rất nhiều người phải vật lộn với việc bạn nên sử dụng toán tử JavaScript nào trong số hai toán tử JavaScript này, vì vậy đừng cảm thấy tệ khi bạn không biết sự khác biệt. Điều đầu tiên, chúng ta cần hiểu toán tử là gì, cũng như cách chúng hoạt động trong JavaScript.

Chính xác thì “==” làm gì?

Trong JavaScript, toán tử “==” là một toán tử so sánh. Điều này có nghĩa là bạn có thể thực hiện các bài kiểm tra logic để xem liệu một thứ có bằng với thứ khác hay không. Kết quả sẽ luôn trả về true hoặc false.

Với “==”, JavaScript không quan tâm đến kiểu dữ liệu [chuỗi hoặc số nguyên] bạn chuyển cho nó, miễn là nội dung bạn cung cấp phù hợp với nó.

“55” == “55”true55 == 55true“55” == 55true

“===” khác với “==” như thế nào?

Toán tử “===” so sánh cả nội dung loại , trong khi “==” chỉ so sánh nội dung. JavaScript đếm bất kỳ thứ gì nằm giữa hai dấu ngoặc kép dưới dạng một chuỗi . Trước đó, tôi đã đề cập rằng chúng ta sẽ sử dụng các số “55” và 55, ngoại trừ, “55” không phải là số nguyên, nó là một chuỗi, trong khi 55 là số nguyên vì nó không được đóng gói bằng dấu ngoặc kép.

“55” === “55”true55 === 55true“55” === 55false

Ví dụ: điều này có nghĩa là nếu bạn có các số 55 và “55” và thử so sánh chúng với toán tử “===”, nó sẽ không chỉ so sánh nội dung của hai dữ liệu hoặc biến bạn chuyển cho nó, nó còn so sánh biến typeof hoặc dữ liệu của nó. Trong trường hợp này, nó sẽ trả về false, vì một chuỗi không cùng kiểu dữ liệu với một số nguyên.

Làm cách nào để tôi có thể tự mình so sánh == so với ===?

Trả lời: Tìm hiểu Công cụ dành cho nhà phát triển của Chrome ! DevTools [còn được gọi là Web Inspector] là người bạn tốt nhất của nhà phát triển web. Chúng cho phép bạn chỉnh sửa bất kỳ trang web nào tại địa phương trong thời gian thực. Và họ cho phép bạn sử dụng tính năng bảng điều khiển của họ để thực hiện các bài kiểm tra logic, viết các chức năng đơn giản và hơn thế nữa. Hãy xem Hướng dẫn dành cho DevTools của Chrome này nếu bạn muốn tìm hiểu thêm.

Cách tốt nhất để kiểm tra == so với === trong JavaScript

  1. Mở DevTools bằng cách nhấn phím Command + Shift + I [Mac] hoặc bằng cách nhấp chuột phải vào bất kỳ đâu trên màn hình và chọn “Kiểm tra”.
  2. Nhấp vào tab “bảng điều khiển”. Từ đó, bạn sẽ có thể thực hiện các bài kiểm tra logic bằng JavaScript. Nhập “55” === 55 và bạn sẽ thấy nó trả về false . Tuy nhiên, khi bạn vượt qua “55” == 55 , kết quả là true.


Sự khác biệt giữa == và === trong JavaScript

Bạn thậm chí có thể kiểm tra JavaScript của mình chỉ bằng cách sử dụng các biến! Chỉ cần xóa bảng điều khiển của bạn bằng cách nhấp chuột phải, sau đó nhấn “Xóa bảng điều khiển”, sau đó dùng thử!

Còn về toán tử! = Và! ==?

Bạn cũng có thể so sánh nếu một cái gì đó là “! =” [Không bằng] cái gì đó khác và nếu cái gì đó là “! ==” [hoàn toàn không bằng] cái gì đó khác.

Khi kiểm tra nếu “55”! == 55  với toán tử! ==, câu trả lời trả về sẽ đúng vì chuỗi “55” không hoàn toàn bằng số nguyên 55.


Sự khác biệt giữa == và === trong JavaScript

Hãy nhớ làm rối tung bảng điều khiển bằng cách sử dụng các loại dữ liệu khác nhau cho đến khi bạn hiểu nó thành khoa học, nếu bạn vẫn còn nhầm lẫn thì hãy chắc chắn xem trang Các toán tử so sánh của Mozilla để tìm hiểu chi tiết hơn. Sau đó, khi bạn đã sẵn sàng, hãy đưa siêu năng lực JavaScript mới học được của bạn tham gia các cuộc đua trong Trò chơi Bảng bình đẳng JavaScript !

Lời kết

Cảm ơn bạn đã dành thời gian đọc một chút về toán tử và toán hạng trong JavaScript. Nếu bạn là người mới bắt đầu hoặc người đã biết một số kiến ​​thức cơ bản và muốn tìm hiểu thêm về ngôn ngữ JavaScript, hãy nhớ xem Khóa học Java fullstack trong bốn tháng .

Video liên quan

Chủ Đề