Sự Khác Biệt Giữa Phương Thức .equals () Và Toán Tử == Trong Java

Bài đăng nổi bật

Học Ngành Gì KHÔNG THẤT NGHIỆP

13:22 Trang chủJava Sự khác biệt giữa phương thức .equals () và toán tử == trong Java 10:11 0 Nhận xét 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:
    // Vi du de thay su khac biet // equal va == public class Codelean { 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)); } }
    Đầu ra: falsetrue 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ử Toán tử đẳng thức (==) 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.
// Toan tu == voi kieu du lieu nguyen thuy class CodeLean { public static void main(String[] args) { // integer-type System.out.println(10 == 20); // char-type System.out.println('a' == 'b'); // char and double type System.out.println('a' == 97.0); // boolean type System.out.println(true == true); } }
Đầu ra: 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.
// toan tu == voi cac kieu du lieu khac nhau class Test { public static void main(String[] args) { Thread t = new Thread(); Object o = new Object(); String s = new String("CodeLean"); System.out.println(t == o); System.out.println(o == s); // Bo chu thich dong sau neu muon gay ra loi // System.out.println(t==s); } }
Đầu ra: falsefalse // lỗi: loại không thể so sánh: Thread và String .equals () 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 class CodeLean { public static void main(String[] args) { Thread t1 = new Thread(); Thread t2 = new Thread(); Thread t3 = t1; 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)); } }
Đầu ra: 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.
tham khảo: geeksforgeeks Tags Java JavaCore

You might like

Hiện thêm

Post a Comment

Đăng nhận xét

Mới hơn Cũ hơn

Follow Us

Chủ Đề Tôi Quan Tâm ;)

  • .Net
  • .net core
  • Agile
  • AI
  • AngularJS
  • Anroid
  • AP
  • Azure
  • BDW
  • Bootstrap
  • c
  • C#
  • Cấu Trúc Dữ Liệu và Giải Thuật
  • CodeLean
  • CSDL
  • CSS
  • Database
  • Design Pattern
  • DesignThinking
  • DevOps
  • Docker
  • Git
  • github
  • HTML
  • Hướng_Nghiệp
  • Index
  • ISA
  • Java
  • Java1
  • Java2
  • JavaAdvanced
  • JavaCore
  • JavaScript
  • JSP & Servlet
  • Laravel Framework
  • Laravel9
  • Lập trình C
  • Lập trình cho trẻ
  • LINQ
  • MLJ
  • MySQL
  • NodeJS
  • OOAD
  • PHP
  • Programming
  • Python
  • QA
  • React Native
  • Review Sách
  • Spring Boot
  • Spring Framework
  • SQL
  • Teaching
  • Test
  • Thiết Kế Website
  • Tools
  • TypeScript
  • Web Development
  • WebAPI

Most Popular

Chuẩn hoá dữ liệu là gì? 1NF, 2NF, 3NF & BCNF với các ví dụ

11:57

[MySQL 05] Mô hình ER là gì và ví dụ

12:08

Tìm Phủ Tối thiểu của một Hàm

12:29

Xác định khóa, Tìm phủ tối thiểu, Chuẩn hóa dữ liệu

16:36

Big O: Cách tính độ phức tạp của thời gian và không gian

16:37

Bắt đầu học Node.js với Visual Studio Code

10:07

[Web API] Hướng dẫn từ cơ bản tới nâng cao Web API ASP.NET

19:21

[MySQL 02] Hướng dẫn sử dụng MySQL Workbench

11:32

Hướng dẫn sửa cấu hình để chạy Dự Án Laravel từ Source Code có sẵn

14:59

[JSP & Servlet] Tạo Web Application JSP Servlet Sử dụng JSTL với Tomcat 10 trên IntelliJ

21:27

Biểu mẫu liên hệ

Từ khóa » Cách Dùng Equals