Từ khóa này trong Java

⚡ Tóm tắt thông minh

Java Từ khóa `this` là một biến tham chiếu trỏ đến đối tượng hiện tại bên trong một phương thức hoặc hàm tạo. LessBài viết này đề cập đến mục đích, cách sử dụng phổ biến, xung đột tên gọi, chuỗi hàm tạo và một ví dụ minh họa.

  • 🔑 Định nghĩa: Điều này tham chiếu đến thể hiện hiện tại của một lớp.
  • 🧱 Giải quyết xung đột: Sử dụng thuộc tính `this.field` để phân biệt các biến thể hiện với các tham số có tên giống hệt nhau.
  • 🪜 Cách sử dụng hàm tạo: Phương thức `this()` gọi một hàm tạo khác của cùng lớp để khởi tạo gọn gàng hơn.
  • Đi và về: Hãy gửi giá trị này dưới dạng tham số hoặc trả về nó để hỗ trợ chuỗi phương thức.
  • 🧪 Ví dụ đã làm việc: Lớp Account minh họa cách khắc phục lỗi xuất ra bằng không do hiện tượng che khuất tham số.
  • 🤖 Hỗ trợ AI: Các công cụ lập trình AI phát hiện các tiền tố bị thiếu và đề xuất các cách tái cấu trúc chính xác.

Từ khóa này trong Java

Từ khóa này là gì Java?

từ khóa này trong Java là một biến tham chiếu đề cập đến đối tượng hiện tại của một phương thức hoặc hàm tạo. Mục đích chính của việc sử dụng từ khóa này trong Java Mục đích là để tránh nhầm lẫn giữa các thuộc tính của lớp và các tham số có cùng tên.

Sử dụng từ khóa này trong Java

Sau đây là một số cách sử dụng khác nhau của từ khóa này trong Java:

  • Nó có thể được sử dụng để tham chiếu đến biến thể hiện của lớp hiện tại.
  • Nó có thể được sử dụng để gọi hoặc khởi tạo hàm tạo của lớp hiện tại.
  • Nó có thể được truyền như một tham số trong lời gọi phương thức.
  • Nó có thể được truyền làm đối số trong lời gọi hàm tạo.
  • Nó có thể được sử dụng để trả về thể hiện hiện tại của lớp.

Nhấp chuột đây nếu video không thể truy cập được

Cách hiểu từ khóa `this` với một ví dụ

Từ khóa này trong Java
Java từ khóa này Ví dụ

  1. Lớp: tài khoản lớp
  2. Biến thể hiện: A và B
  3. Phương pháp đặt dữ liệu: Để đặt giá trị cho a và b.
  4. Phương pháp Hiển thị dữ liệu: Để hiển thị các giá trị của a và b.
  5. Phương pháp chính: Trong đó, chúng ta tạo một đối tượng cho lớp Account và gọi các phương thức set data và show data.

Vượt qua sự nhầm lẫn của trình biên dịch

Hãy biên dịch và chạy đoạn mã.

Đầu ra dự kiến ​​​​của chúng tôi cho A và B phải được khởi tạo tương ứng với giá trị 2 và 3.

Nhưng giá trị lại là 0. Tại sao? Chúng ta hãy cùng tìm hiểu.

Từ khóa này trong Java

Trong phương thức Set data, các đối số được khai báo là a và b, trong khi các biến thể hiện cũng được đặt tên là a và b.

Từ khóa này trong Java

Trong quá trình thực thi, trình biên dịch bị nhầm lẫn giữa biến “a” ở phía bên trái của toán tử gán, liệu nó là biến thể hiện hay biến cục bộ. Do đó, nó không gán giá trị cho “a” khi phương thức `set data` được gọi.

Từ khóa này trong Java

Giải pháp nằm ở từ khóa này.

Thêm cả “a” và “b” vào cuối. Java từ khóa này theo sau là toán tử dấu chấm (.).

Từ khóa này trong Java

Trong quá trình thực thi mã, khi một đối tượng gọi phương thức setdata, từ khóa this sẽ được thay thế bằng trình xử lý đối tượng “obj”. (Xem hình bên dưới.)

Từ khóa này trong Java

Vì vậy bây giờ trình biên dịch đã biết,

  • Chữ “a” ở phía bên trái là một biến thể hiện (instance variable).
  • Trong khi đó, chữ “a” ở phía bên phải là một biến cục bộ.

biến được khởi tạo chính xác và kết quả mong đợi sẽ được hiển thị.

Từ khóa này trong Java

Trình biên dịch xử lý nhiều đối tượng như thế nào?

Giả sử bạn chọn các tên khác nhau cho biến thể hiện và các tham số phương thức của mình.

Từ khóa này trong Java

Nhưng lần này, bạn tạo hai đối tượng của lớp, mỗi đối tượng gọi phương thức dữ liệu đã đặt.

Trình biên dịch sẽ xác định như thế nào xem nó nên làm việc trên biến thể hiện của đối tượng 1 hay đối tượng 2?

Từ khóa này trong Java

Vâng, trình biên dịch ngầm nối thêm Biến thể hiện với từ khóa `this` (hình ảnh bên dưới).

Từ khóa này trong Java

Như vậy, khi đối tượng 1 đang gọi phương thức dữ liệu đã đặt, một biến thể hiện sẽ được thêm vào bởi biến tham chiếu của nó.

Từ khóa này trong Java

Trong khi đối tượng 2 đang gọi phương thức dữ liệu đã đặt, một biến thể hiện của đối tượng 2 sẽ được sửa đổi.

Từ khóa này trong Java

Trình biên dịch sẽ tự động xử lý việc này. Bạn không cần phải thêm từ khóa `this` một cách rõ ràng trừ khi có trường hợp ngoại lệ yêu cầu.

Ví dụ: Từ khóa này trong Java Với Code

Ví dụ: Để học cách sử dụng từ khóa này.

Bước 1) Sao chép đoạn mã sau vào notepad.

class Account{
int a;
int b;

 public void setData(int a ,int b){
  a = a;
  b = b;
 }
 public void showData(){
   System.out.println("Value of A ="+a);
   System.out.println("Value of B ="+b);
 }
 public static void main(String args[]){
   Account obj = new Account();
   obj.setData(2,3);
   obj.showData();
 }
}

Bước 2) Lưu, biên dịch và chạy mã.

Bước 3) Giá trị của a và b được hiển thị là bằng không? Để sửa lỗi, hãy thêm dòng số 6 và 7 với điều này từ khóa.

this.a =a;
this.b =b;

Bước 4) Lưu, biên dịch và chạy mã. Lần này, giá trị của a và b được đặt lần lượt là 2 và 3.

Câu Hỏi Thường Gặp

Từ khóa `this` tham chiếu đến đối tượng hiện tại mà phương thức hoặc hàm tạo của nó đang được thực thi. Nó cho phép mã truy cập vào các trường và phương thức của chính đối tượng đó.

Không. Từ khóa `this` thuộc về một thể hiện (instance), trong khi các phương thức tĩnh (static methods) tồn tại ở cấp độ lớp. Việc sử dụng `this` bên trong một phương thức tĩnh sẽ gây ra lỗi biên dịch.

Phương thức `this()` gọi một hàm tạo khác của cùng lớp với câu lệnh đầu tiên. Nó tránh việc mã bị trùng lặp và cho phép một hàm tạo ủy thác việc thiết lập cho một hàm tạo được nạp chồng.

Các trợ lý lập trình AI sẽ đánh dấu các tham số bị che khuất, thêm tiền tố `this` bị thiếu và viết lại các hàm tạo để sử dụng chuỗi `this()` và các phương thức thiết lập linh hoạt trả về `this`.

Các trợ giảng AI giải thích về định danh đối tượng, minh họa sự khác biệt giữa phạm vi thể hiện và phạm vi cục bộ, đồng thời đưa ra các ví dụ từng bước kèm theo bài kiểm tra giúp củng cố kiến ​​thức về thời điểm sử dụng từ khóa `this`.

Kiểm tra bài viết của chúng tôi trên Java Câu hỏi phỏng vấn: - Nhấp vào đây

Tóm tắt bài viết này với: