คำหลักนี้ใน Java

⚡ สรุปอย่างชาญฉลาด

Java คีย์เวิร์ด `this` เป็นตัวแปรอ้างอิงที่ชี้ไปยังอ็อบเจ็กต์ปัจจุบันภายในเมธอดหรือคอนสตรัคเตอร์ Lessเนื้อหาครอบคลุมวัตถุประสงค์ การใช้งานทั่วไป ความขัดแย้งในการตั้งชื่อ การเชื่อมโยงคอนสตรัคเตอร์ และตัวอย่างการใช้งาน

  • 🔑 ความหมาย: นี่เป็นการอ้างอิงถึงอินสแตนซ์ปัจจุบันของคลาส
  • 🧱 แก้ไขข้อขัดแย้ง: ใช้ this.field เพื่อแยกความแตกต่างระหว่างตัวแปรอินสแตนซ์กับพารามิเตอร์ที่มีชื่อเดียวกัน
  • 🪜 การใช้งานตัวสร้าง: เมธอด `this()` จะเรียกใช้คอนสตรัคเตอร์อีกตัวหนึ่งของคลาสเดียวกันเพื่อการเริ่มต้นใช้งานที่สะอาดกว่า
  • ผ่านและกลับ: ส่งค่านี้เป็นอาร์กิวเมนต์หรือส่งคืนเพื่อรองรับการเรียกใช้เมธอดแบบต่อเนื่อง
  • 🧪 ตัวอย่างการทำงาน: คลาส Account แสดงให้เห็นว่าวิธีนี้ช่วยแก้ไขปัญหาการแสดงผลเป็นศูนย์ที่เกิดจากการซ้อนทับของพารามิเตอร์ได้อย่างไร
  • 🤖 ความช่วยเหลือจาก AI: เครื่องมือเขียนโค้ด AI ตรวจจับคำนำหน้า "this" ที่หายไปและแนะนำการปรับปรุงแก้ไขที่ถูกต้อง

คำหลักนี้ใน Java

คำสำคัญนี้คืออะไร Java?

การขอ คำสำคัญนี้ใน Java เป็นตัวแปรอ้างอิงที่อ้างถึงวัตถุปัจจุบันของวิธีการหรือตัวสร้าง วัตถุประสงค์หลักของการใช้คำสำคัญนี้ใน Java เพื่อขจัดความสับสนระหว่างแอตทริบิวต์ของคลาสและพารามิเตอร์ที่มีชื่อเดียวกัน

การใช้คำสำคัญนี้ใน Java

ต่อไปนี้คือตัวอย่างการใช้งานคีย์เวิร์ด `this` ในรูปแบบต่างๆ Java:

  • สามารถใช้เพื่ออ้างถึงตัวแปรอินสแตนซ์ของคลาสปัจจุบันได้
  • สามารถใช้เพื่อเรียกหรือเริ่มต้นการทำงานของคอนสตรัคเตอร์คลาสปัจจุบันได้
  • สามารถส่งเป็นอาร์กิวเมนต์ในการเรียกใช้เมธอดได้
  • สามารถส่งเป็นอาร์กิวเมนต์ในการเรียกใช้คอนสตรัคเตอร์ได้
  • สามารถใช้เพื่อส่งคืนอินสแตนซ์ของคลาสปัจจุบันได้

คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้

วิธีทำความเข้าใจคีย์เวิร์ดนี้ พร้อมตัวอย่าง

คำหลักนี้ใน Java
Java คำสำคัญนี้ ตัวอย่าง

  1. ชั้น: บัญชีชั้นเรียน
  2. ตัวแปรอินสแตนซ์: ก และ ข
  3. ข้อมูลชุดวิธี: เพื่อตั้งค่าสำหรับ a และ b
  4. วิธีการแสดงข้อมูล: เพื่อแสดงค่าของ a และ b
  5. วิธีการหลัก: โดยที่เราสร้างอ็อบเจ็กต์สำหรับคลาส Account และเรียกใช้เมธอด set data และ show data

เดินฝ่าความสับสนของคอมไพเลอร์ไปพร้อมกัน

มาลองคอมไพล์และรันโค้ดกันดู

ผลลัพธ์ที่คาดหวังของเราสำหรับ A และ B ควรเริ่มต้นเป็นค่า 2 และ 3 ตามลำดับ

แต่ค่าที่ได้คือ 0 ทำไมจึงเป็นเช่นนั้น? เรามาตรวจสอบกันดู

คำหลักนี้ใน Java

ในเมธอด Set data นั้น อาร์กิวเมนต์จะถูกประกาศเป็น a และ b ในขณะที่ตัวแปรอินสแตนซ์ก็มีชื่อว่า a และ b เช่นกัน

คำหลักนี้ใน Java

ระหว่างการประมวลผล คอมไพเลอร์เกิดความสับสนว่า “a” ทางด้านซ้ายของตัวดำเนินการกำหนดค่า เป็นตัวแปรอินสแตนซ์หรือตัวแปรโลคอล ดังนั้นจึงไม่กำหนดค่าให้กับ “a” เมื่อเรียกใช้เมธอด set data

คำหลักนี้ใน Java

คำตอบคือคำหลักนี้

เพิ่ม “a” และ “b” เข้าไปด้วย Java คำสำคัญนี้ตามด้วยตัวดำเนินการจุด (.)

คำหลักนี้ใน Java

ในระหว่างการทำงานของโค้ด เมื่ออ็อบเจ็กต์เรียกใช้เมธอด setdata คำว่า this จะถูกแทนที่ด้วยตัวจัดการอ็อบเจ็กต์ "obj" (ดูภาพด้านล่าง)

คำหลักนี้ใน Java

ตอนนี้คอมไพเลอร์รู้แล้วว่า

  • ตัวอักษร “a” ทางด้านซ้ายมือคือตัวแปรอินสแตนซ์
  • ในขณะที่ตัวอักษร “a” ทางด้านขวามือเป็นตัวแปรเฉพาะที่

การขอ ตัวแปร เริ่มต้นได้อย่างถูกต้อง และเอาต์พุตที่คาดหวังจะปรากฏขึ้น

คำหลักนี้ใน Java

วิธีที่คอมไพเลอร์จัดการกับอ็อบเจ็กต์หลายตัว

สมมติว่าคุณเลือกใช้ชื่อที่แตกต่างกันสำหรับตัวแปรอินสแตนซ์และอาร์กิวเมนต์ของเมธอด

คำหลักนี้ใน Java

แต่คราวนี้ คุณสร้างอ็อบเจ็กต์สองรายการของคลาส โดยแต่ละอ็อบเจ็กต์เรียกใช้เมธอด set data

คอมไพเลอร์จะพิจารณาอย่างไรว่าควรทำงานกับตัวแปรอินสแตนซ์ของอ็อบเจ็กต์ 1 หรืออ็อบเจ็กต์ 2?

คำหลักนี้ใน Java

ดีที่ คอมไพเลอร์ต่อท้ายโดยปริยาย ตัวแปรอินสแตนซ์ที่มีคีย์เวิร์ด this (ดูภาพด้านล่าง)

คำหลักนี้ใน Java

เมื่อวัตถุ 1 เรียกใช้เมธอด set data ตัวแปรตัวอย่างจะถูกต่อท้ายด้วยตัวแปรอ้างอิง

คำหลักนี้ใน Java

ขณะที่ออบเจ็กต์ 2 กำลังเรียกใช้เมธอด set data ตัวแปรอินสแตนซ์ของออบเจ็กต์ 2 ได้รับการแก้ไข

คำหลักนี้ใน Java

คอมไพเลอร์จะจัดการเรื่องนี้โดยอัตโนมัติ คุณไม่จำเป็นต้องเพิ่มคีย์เวิร์ด `this` อย่างชัดเจน เว้นแต่จะมีสถานการณ์พิเศษที่จำเป็นต้องทำ

ตัวอย่าง: คำหลักนี้ใน Java ด้วยระบบเส้นทาง Code

ตัวอย่าง: เพื่อเรียนรู้วิธีการใช้คีย์เวิร์ดนี้

ขั้นตอน 1) คัดลอกโค้ดต่อไปนี้ลงใน 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();
 }
}

ขั้นตอน 2) บันทึก คอมไพล์ และรันโค้ด

ขั้นตอน 3) ค่าของ a และ b แสดงเป็นศูนย์ใช่หรือไม่? เพื่อแก้ไขข้อผิดพลาด ให้เพิ่มบรรทัดที่ 6 และ 7 ด้วย... นี้ คำสำคัญ.

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

ขั้นตอน 4) บันทึก คอมไพล์ และรันโค้ด คราวนี้ค่าของ a และ b จะถูกตั้งเป็น 2 และ 3 ตามลำดับ

คำถามที่พบบ่อย

คำว่า `this` หมายถึงอ็อบเจ็กต์ปัจจุบันที่กำลังเรียกใช้เมธอดหรือคอนสตรัคเตอร์อยู่ มันช่วยให้โค้ดสามารถเข้าถึงฟิลด์และเมธอดของอ็อบเจ็กต์นั้นได้

ไม่ คีย์เวิร์ด `this` ใช้กับอินสแตนซ์ ในขณะที่เมธอดแบบสแตติกนั้นอยู่ที่ระดับคลาส การใช้ `this` ภายในเมธอดแบบสแตติกจะทำให้เกิดข้อผิดพลาดขณะคอมไพล์

`this()` เรียกใช้คอนสตรัคเตอร์อีกตัวหนึ่งของคลาสเดียวกันกับคำสั่งแรก วิธีนี้ช่วยหลีกเลี่ยงโค้ดซ้ำซ้อนและทำให้คอนสตรัคเตอร์ตัวหนึ่งมอบหมายการตั้งค่าให้กับคอนสตรัคเตอร์อีกตัวที่มีการโอเวอร์โหลด

ผู้ช่วยเขียนโค้ด AI จะระบุพารามิเตอร์ที่ซ้ำซ้อน เพิ่มคำนำหน้า `this` ที่หายไป และเขียนคอนสตรัคเตอร์ใหม่เพื่อใช้การเชื่อมโยง `this()` และเมธอด setter ที่ลื่นไหลซึ่งส่งคืนค่า `this`

ผู้สอน AI จะอธิบายถึงเอกลักษณ์ของวัตถุ แสดงความแตกต่างระหว่างขอบเขตของอินสแตนซ์และขอบเขตของตัวแปรภายใน และสร้างตัวอย่างทีละขั้นตอนพร้อมแบบทดสอบเพื่อเสริมความเข้าใจเกี่ยวกับการใช้คีย์เวิร์ด `this`

ตรวจสอบบทความของเราเกี่ยวกับ Java คำถามในการสัมภาษณ์:- คลิกที่นี่

สรุปโพสต์นี้ด้วย: