วิธีใช้ Java คำหลักนี้
เมื่อคุณเริ่มเขียนโค้ดใน Java คุณจะสังเกตเห็นคีย์เวิร์ด this ใช้ในวิธีการหรือตัวสร้าง this คีย์เวิร์ดหมายถึงอ็อบเจ็กต์ปัจจุบันภายในเมธอดหรือคอนสตรัคเตอร์ และมีการใช้งานที่หลากหลายใน Java
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้เกี่ยวกับ Java คีย์เวิร์ดนี้ รวมถึงวิธีการและเหตุผลที่ใช้ นอกจากนี้ เราจะยกตัวอย่างสองสามตัวอย่างตลอดทั้งบทความเพื่อสาธิตการใช้งานคีย์เวิร์ดนี้
วิธีการและตัวสร้าง Java
เมธอดและคอนสตรัคเตอร์เป็นสองส่วนสำคัญของการเขียนโปรแกรมใน Java
ฟังก์ชันหรือ methods เนื่องจากถูกเรียกในการเขียนโปรแกรมเชิงวัตถุ เป็นบล็อกของโค้ดที่ทำงานเฉพาะ ตัวอย่างเช่น เมื่อดำเนินการเมธอด อาจพิมพ์เนื้อหาของอาร์เรย์ไปยังคอนโซล หรืออำนวยความสะดวกในการป้อนข้อมูลของผู้ใช้ในโปรแกรม
นี่คือตัวอย่างวิธีการใน Java ที่พิมพ์ It’s Monday! ไปที่คอนโซล:
public class PrintMessage {
public static void main(String[] args) {
System.out.println("It's Monday!");
}
}
เมื่อเรารันโค้ดของเรา เอาต์พุตต่อไปนี้จะถูกส่งกลับไปยังคอนโซล:It’s Monday!
ตัวสร้างจะคล้ายกับเมธอดและถูกเรียกใช้เมื่ออ็อบเจ็กต์สร้างอินสแตนซ์หรือสร้างในโปรแกรม นี่คือตัวอย่างคอนสตรัคเตอร์ที่ตั้งค่าตัวแปรอินสแตนซ์ที่เรียกว่า day ถึง Monday เมื่ออินสแตนซ์ของวันจันทร์สร้างอินสแตนซ์และพิมพ์ It’s ตามด้วยวันในสัปดาห์ไปยังคอนโซล:
class Monday {
private Monday() {
day = "Monday";
}
public static void main(String[] args) {
Monday day_of_the_week = new Monday();
System.out.println("It's " + day_of_the_week.day);
}
}
รหัสของเราส่งคืน:It’s Monday!
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับคอนสตรัคเตอร์ คุณสามารถอ่านคู่มือฉบับสมบูรณ์ของเราเกี่ยวกับคอนสตรัคเตอร์ Java ตอนนี้เราได้สำรวจพื้นฐานของเมธอดและคอนสตรัคเตอร์ของ Java แล้ว เรามาเริ่มพูดถึงthisกัน คีย์เวิร์ดและวิธีใช้งานในโค้ดของคุณ
Java คำหลักนี้
ใน Java this คีย์เวิร์ดหมายถึงอ็อบเจกต์ปัจจุบันภายในเมธอดหรือคอนสตรัคเตอร์
เพื่อแสดงให้เห็นสิ่งนี้ ลองใช้ตัวสร้างตัวอย่างของเราจากด้านบนที่พิมพ์วันในสัปดาห์ไปที่คอนโซล ในตัวอย่างด้านล่าง เราได้พิมพ์ค่าของ this และค่าของ Monday() วัตถุที่เราสร้างอินสแตนซ์:
class Monday {
private String day;
private Monday() {
day = "Monday";
System.out.println(this);
}
public static void main(String[] args) {
Monday day_of_the_week = new Monday();
System.out.println("It's " + day_of_the_week.day);
System.out.println(day_of_the_week);
}
} รหัสของเราส่งคืนดังต่อไปนี้:
Main@d716361 It's Monday Main@d716361
บรรทัดแรกในผลลัพธ์ของเราคือค่าของ this ซึ่งพิมพ์ไปที่คอนโซลเมื่อ Monday() วัตถุถูกสร้างอินสแตนซ์ บรรทัดที่สองในผลลัพธ์ของเราคือการพิมพ์ It’s ตามด้วยค่าของ day ใน day_of_the_week วัตถุที่เราประกาศ สุดท้าย เราพิมพ์ค่าของ day_of_the_week วัตถุ
อย่างที่คุณเห็น ค่าของ this และ day_of_the_week วัตถุเหมือนกัน ซึ่งหมายความว่า this คีย์เวิร์ดหมายถึงอ็อบเจกต์ปัจจุบันภายในเมธอดหรือคอนสตรัคเตอร์
Java กรณีการใช้งานนี้
มีสองสถานการณ์หลักที่การใช้คำหลักนี้มีค่า เหล่านี้คือ:
- ใช้สิ่งนี้เพื่อแก้ความกำกวมชื่อตัวแปร
- ส่งเป็นอาร์กิวเมนต์
รูปแบบของคีย์เวิร์ดนี้ this() , ยังใช้เมื่อโอเวอร์โหลดคอนสตรัคเตอร์ อย่างไรก็ตาม นี่เป็นการใช้งานขั้นสูงกว่านี้ ดังนั้นเราจะไม่พูดถึงมันในบทความนี้
ใช้สิ่งนี้เพื่อแก้ความกำกวมของชื่อตัวแปร
ตัวแปรตั้งแต่สองตัวขึ้นไปไม่สามารถมีชื่อเดียวกันภายในขอบเขตใน Java ซึ่งหมายความว่าหากคุณพยายามประกาศตัวแปรสองตัวและใช้ชื่อเดียวกัน ตรรกะของโปรแกรมของคุณจะได้รับผลกระทบ
อย่างไรก็ตาม เราสามารถหลีกเลี่ยงข้อจำกัดนี้ได้โดยใช้ this กระบวนการ. this ช่วยให้เราสามารถกำหนดตัวแปรเฉพาะให้กับวัตถุ ซึ่งช่วยให้เราสามารถเก็บทั้งค่าของตัวแปรในวัตถุและค่าของตัวแปรเริ่มต้นได้
มาดูตัวอย่างเพื่ออธิบายวิธีการทำงานกัน สมมติว่าเรากำลังสร้างโปรแกรมที่ติดตามชื่อของนักเรียนที่กำลังถูกเพิ่มเข้าในรางวัลเกียรติยศในชั้นประถมศึกษาปีที่ 5 แอปพลิเคชันนี้ควรพิมพ์ชื่อนักเรียนไปที่คอนโซล
นี่คือรหัสที่เราจะใช้สร้างแอปพลิเคชันนี้:
class HonorRoll {
String studentName;
HonorRoll(String studentName) {
this.studentName = studentName;
}
public static void main(String[] args) {
HonorRoll alex = new HonorRoll("Alex");
System.out.println("New honor roll inductee: " + alex.studentName);
}
} เมื่อเราเรียกใช้โปรแกรม ข้อมูลต่อไปนี้จะถูกส่งกลับ:
New honor roll inductee: Alex
ในตัวอย่างนี้ เราใช้ this เพื่อติดตามชื่อนักเรียนใน HonorRoll กระบวนการ. เราใช้โค้ดบรรทัดต่อไปนี้เพื่อกำหนดค่า studentName พารามิเตอร์ตัวสร้าง (ซึ่งก็คือ Alex ในตัวอย่างข้างต้น) ให้กับตัวแปร this.studentName . หากเราไม่ทำเช่นนี้ ข้อมูลต่อไปนี้จะถูกส่งคืน:
New honor roll inductee: null
ทั้งนี้เป็นเพราะเพื่อให้ HonorRoll . ของเรา วิธีเก็บชื่อนักเรียน ต้องใช้ this เพื่อลบความคลุมเครือออกจากคอมไพเลอร์ Java ดังนั้น หากเราลบคำว่า this จากโค้ดของเรา เราจะได้ค่า null
ส่งสิ่งนี้เป็นข้อโต้แย้ง
this คีย์เวิร์ดมักใช้เพื่อส่งผ่านอ็อบเจ็กต์ปัจจุบันในเมธอดหรือคอนสตรัคเตอร์ไปยังเมธอดอื่น
สมมติว่าเรากำลังสร้างแอปพลิเคชันที่ติดตามจำนวนเมล็ดกาแฟที่ร้านกาแฟในท้องถิ่นมีในสต็อก แอปพลิเคชั่นนี้ควรอนุญาตให้เจ้าของร้านกาแฟเพิ่มจำนวนถุงคงเหลือในสต็อกได้ ซึ่งจะใช้เมื่อมีสต๊อกเพิ่มขึ้น นี่คือรหัสที่เราสามารถใช้สร้างแอปพลิเคชันนี้:
class AddStock {
int stockToAdd;
int stockTotal;
AddStock(int stockToAdd, int stockTotal) {
this.stockToAdd = stockToAdd;
this.stockTotal = stockTotal;
System.out.println("Current stock: " + this.stockTotal);
calculateNewStock(this);
System.out.println("New stock: " + this.stockTotal);
}
void calculateNewStock(AddStock s) {
s.stockTotal += s.stockToAdd;
}
}
class Main {
public static void main(String[] args) {
AddStock newStockValue = new AddStock(10, 9);
}
} รหัสของเราส่งคืน:
Current stock: 9 New stock: 19
มาทำลายรหัสกันเถอะ ในโค้ดของเรา เราได้กำหนดคลาสที่ชื่อว่า AddStock . คลาสนี้มีเมธอดที่ใช้สองค่า—stockToAdd และ stockTotal —และเรียกใช้ calculateNewStock() วิธีการคำนวณจำนวนกาแฟที่ร้านกาแฟมีในสต็อก
จากนั้นเราใช้ Main() เพื่อเริ่มต้นอินสแตนซ์ของคลาส AddStock และเพิ่มค่าสองค่าด้วยกัน:10 และ 9 หลังจากที่โปรแกรมของเราดำเนินการ โค้ดของเราจะเพิ่มค่าสองค่าที่เราระบุ ได้แก่ สต็อคที่จะเพิ่มและยอดรวมของสต็อคปัจจุบันตามลำดับ และพิมพ์ทั้งสองค่า สต็อกปัจจุบันและระดับสต็อกที่แก้ไขไปยังคอนโซล
ในตัวอย่างนี้ this คำหลักถูกใช้เป็นอาร์กิวเมนต์เมื่อเราเรียก calculateNewStock() กระบวนการ. ซึ่งช่วยให้เราสามารถส่งต่อตัวแปรที่เรากำลังทำงานด้วยในคลาส AddStock ไปยัง calculateNewStock() ซึ่งต้องใช้ตัวแปรเหล่านั้นในการคำนวณระดับสต็อกที่แก้ไข
บทสรุป
คีย์เวิร์ดนี้ Java อ้างถึงอ็อบเจ็กต์ปัจจุบันภายในเมธอดหรือคอนสตรัคเตอร์ ใน Java คำหลักนี้มีการใช้งานหลักสองประการ:เพื่อแก้ความกำกวมชื่อตัวแปร และเพื่อส่งผ่านสิ่งนี้เป็นอาร์กิวเมนต์
กวดวิชานี้อภิปรายโดยมีการอ้างอิงถึงตัวอย่าง วิธีใช้คีย์เวิร์ดนี้ของ Java ในบริบททั้งสาม ตอนนี้คุณมีความรู้ที่จำเป็นในการเริ่มใช้คีย์เวิร์ดนี้ของ Java อย่างผู้เชี่ยวชาญแล้ว