วิธีใช้ Java Static Keyword
เมื่อคุณทำงานกับชั้นเรียนใน Java คุณมักจะต้องสร้างอินสแตนซ์ของชั้นเรียนก่อนจึงจะสามารถเข้าถึงสมาชิกของชั้นเรียนได้ อย่างไรก็ตาม คุณอาจพบสถานการณ์ที่คุณต้องการกำหนดสมาชิกของชั้นเรียนโดยไม่ต้องสร้างอินสแตนซ์ของชั้นเรียน
นั่นคือที่มาของคีย์เวิร์ดสแตติก Java คีย์เวิร์ดสแตติก Java ใช้เพื่อกำหนดสมาชิกของคลาสที่คุณสามารถเข้าถึงได้โดยไม่ต้องสร้างอินสแตนซ์ของคลาส
บทช่วยสอนนี้จะอธิบายพร้อมตัวอย่าง พื้นฐานของคำหลักสแตติก Java และวิธีใช้งานในโปรแกรม Java ของคุณ
คลาส Java
ใน Java คลาสเป็นพิมพ์เขียวสำหรับอ็อบเจ็กต์ ตัวอย่างเช่น คลาสที่ชื่อว่า OrderCoffee อาจรวมฟังก์ชันทั้งหมดที่เกี่ยวข้องกับการสั่งซื้อกาแฟ เช่น การสั่งซื้อ การเปลี่ยนแปลงคำสั่งซื้อที่มีอยู่ และเพิ่มรายการใหม่ลงในคำสั่งซื้อ
จากนั้นเราสามารถสร้างวัตถุที่เป็นอินสแตนซ์ของคลาสนั้นได้ ตัวอย่างเช่น ออบเจ็กต์ชื่อ CoffeeOrder12 สามารถใช้พิมพ์เขียวจากคลาส CoffeeOrder เพื่อจัดเก็บข้อมูลสำหรับการสั่งซื้อกาแฟแต่ละรายการ ออบเจ็กต์ CoffeeOrder12 จะสามารถเข้าถึงฟังก์ชันและวิธีการทั้งหมดที่ประกาศไว้ในคลาส CoffeeOrder ดูรูปภาพที่ 1 สำหรับการนำเสนอแนวคิดเหล่านี้
ตอนนี้เราได้พูดถึงพื้นฐานของคลาส Java แล้ว เราไปสำรวจคีย์เวิร์ดสแตติกของ Java กันได้เลย
วิธีการแบบคงที่ของ Java
วิธีสแตติกหรือที่เรียกว่าเมธอดของคลาสคือเมธอดที่เป็นของคลาสไม่ใช่อินสแตนซ์ เนื่องจากเมธอดสแตติกเป็นของคลาส คุณจึงสามารถเรียกใช้เมธอดจากคลาสเองเท่านั้น ไม่ใช่จากอ็อบเจ็กต์ของคลาส
นี่คือไวยากรณ์สำหรับการเรียกใช้เมธอดแบบคงที่:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
Class.methodName();
มาดูตัวอย่างกันว่ามันทำงานอย่างไร
สมมติว่าเรากำลังสร้างโปรแกรมที่จัดการคำสั่งซื้อสำหรับร้านกาแฟ เราต้องการสร้างคลาสชื่อ CoffeeOrder ที่เก็บฟังก์ชันทั้งหมดสำหรับการสั่งกาแฟ
เราตัดสินใจว่าเราต้องการพิมพ์การแจ้งเตือนคำสั่งซื้อใหม่ไปยังคอนโซลของบาริสต้า เราต้องการให้การแจ้งเตือนคำสั่งซื้อใหม่นี้เป็นแบบคงที่ เนื่องจากไม่ขึ้นอยู่กับรหัสอื่นๆ ในออบเจ็กต์คำสั่งซื้อกาแฟ เราสามารถใช้รหัสต่อไปนี้เพื่อทำงานนี้ให้สำเร็จ:
class CoffeeOrder { int createOrder() { // Code here int orderNumber = 92; return orderNumber; } static void printOrder(int order) { System.out.println("Order #" + order + " order has been placed."); } } class Main { public static void main(String[] args) { CoffeeOrder order92 = new CoffeeOrder(); int number = order92.createOrder(); System.out.println("Order number: " + number); CoffeeOrder.printOrder(number); } }
รหัสของเราส่งคืน:
Order number: 92 Order #92 has been placed.
มาทำลายรหัสของเราทีละขั้นตอน ขั้นแรก เราประกาศคลาสชื่อ CoffeeOrder CoffeeOrder มีสองวิธี:createOrder()
และ printOrder()
.
createOrder()
เป็นวิธีปกติที่สร้างคำสั่งซื้อและส่งคืนหมายเลขคำสั่งซื้อ printOrder()
เป็นวิธีการแบบคงที่ที่พิมพ์ข้อความไปยังคอนโซลเพื่อแจ้งให้บาริสต้าทราบว่ามีการสั่งซื้อใหม่แล้ว
ในโปรแกรมหลักของเรา เราสร้างออบเจ็กต์ของ CoffeeOrder ที่เรียกว่า order92 ออบเจ็กต์นี้เก็บข้อมูลสำหรับคำสั่ง #92 จากนั้นเราก็ใช้ createOrder()
วิธีรับหมายเลขคำสั่งซื้อ และเราพิมพ์หมายเลขคำสั่งซื้อนั้น นำหน้าด้วยหมายเลขคำสั่งซื้อ:ไปที่คอนโซล
เมื่อเราเรียกใช้ createOrder()
วิธี เราใช้ order92.createOrder()
. ทั้งนี้เป็นเพราะ createOrder()
ไม่ใช่วิธีการคงที่ ดังนั้นเราจึงสามารถเข้าถึงได้เมื่อจัดการกับวัตถุของเรา
ที่ส่วนท้ายของรหัสหลัก เราใช้ CoffeeOrder.printOrder()
เพื่อพิมพ์ข้อความระบุว่า Order #[order number] สั่งซื้อเรียบร้อยแล้ว ไปที่คอนโซล ในข้อความนี้ order number
เท่ากับจำนวนที่เกี่ยวข้องกับคำสั่งซื้อเฉพาะ เพราะ printOrder()
เป็นวิธีสแตติก เราต้องใช้ CoffeeOrder (คลาสของเรา) เพื่อเข้าถึง
ถ้าเราลองใช้ order92.printOrder()
(ซึ่งเรียกใช้อินสแตนซ์ของชั้นเรียนของเรา) เช่นเดียวกับที่เราทำเมื่อเราใช้ createOrder()
วิธีของเราจะเตือนเรา
ตัวแปรสแตติก Java
คีย์เวิร์ดสแตติกใน Java ยังใช้สร้างตัวแปรอินสแตนซ์สแตติกได้อีกด้วย ตัวแปรสแตติกเป็นของคลาสและเริ่มต้นเพียงครั้งเดียวเมื่อเริ่มต้นการทำงานของโปรแกรม
ตัวแปรคงที่ไม่ได้เป็นของวัตถุ ซึ่งหมายความว่าเพื่อที่จะเข้าถึงพวกเขา คุณต้องอ้างอิงชั้นเรียนที่เกี่ยวข้อง นี่คือรูปแบบการประกาศตัวแปรสแตติกใน Java:
static String COFFEE_NAME = "Espresso";
ในตัวอย่างนี้ เราประกาศตัวแปรสแตติกที่เรียกว่า COFFEE_NAME ซึ่งเรากำหนดค่าสตริง Espresso
มาดูตัวอย่างเพื่อแสดงตัวแปรสแตติก Java ที่ใช้งานกัน
สมมติว่าเรากำลังสร้างโปรแกรมที่ประมวลผลคำสั่งซื้อที่ร้านกาแฟ โปรแกรมนี้ควรเก็บจำนวนบาริสต้าที่ปฏิบัติหน้าที่ และเมื่อมีการสร้างคำสั่ง โปรแกรมควรเชื่อมโยงคำสั่งนั้นกับชื่อของบาริสต้าที่จะเตรียมคำสั่งนั้น
เราสามารถใช้รหัสนี้เพื่อสร้างโปรแกรมแปรรูปกาแฟของเรา:
class CoffeeOrder { int baristasOnDuty = 2; static String name = "Hannah Johnson"; public static void main(String[] args) { CoffeeOrder order111 = new CoffeeOrder(); System.out.println("Baristas on duty: " + baristasOnDuty); System.out.println("Assigned barista: " + order111.name); } }
รหัสของเราส่งคืน:
Baristas on duty: 2 Assigned barista: Hannah Johnson
ในโค้ดของเรา เราประกาศตัวแปรสองตัวต่อไปนี้:
- บาริสต้าOnDuty. นี่เป็นตัวแปรมาตรฐาน ซึ่งหมายความว่าสามารถเข้าถึงได้ตลอดชั้นเรียนของเรา
- ชื่อ นี่คือตัวแปรสแตติก ซึ่งหมายความว่าเราจำเป็นต้องอ้างอิงอ็อบเจ็กต์ที่เกี่ยวข้องกับมันเพื่อดึงค่าออกมา
ในโปรแกรมหลักของเรา เราสร้างอินสแตนซ์ของคลาส CoffeeOrder และเรียกมันว่า order111 จากนั้นเราพิมพ์ข้อความ Baristas on duty:ตามด้วยเนื้อหาของตัวแปร baristasOnDuty เนื่องจากเป็นตัวแปรมาตรฐาน เราจึงไม่จำเป็นต้องอ้างอิงชื่อคลาสของมัน
ในบรรทัดถัดไปของรหัสของเรา เราพิมพ์ข้อความ Assigned barista:ไปที่คอนโซล ตามด้วยชื่อของบาริสต้าที่ได้รับมอบหมายให้สั่ง อย่างไรก็ตาม ชื่อของบาริสต้าจะถูกเก็บไว้เป็นตัวแปรคงที่
ซึ่งหมายความว่า ในการเรียกชื่อบาริสต้า เราจำเป็นต้องอ้างอิงชื่อของวัตถุที่ตัวแปรนั้นเชื่อมโยงอยู่ ในกรณีนี้ เราใช้ order111.name เพื่อเรียกชื่อบาริสต้า เนื่องจากชื่อตัวแปรเป็นแบบคงที่ ดังนั้นสามารถเข้าถึงได้เมื่ออ้างอิงอ็อบเจกต์ order111 เท่านั้น
จาวาสแตติกบล็อก
คีย์เวิร์ดสแตติก Java สามารถใช้เพื่อสร้างบล็อกสแตติกได้ หากคลาสมีตัวแปรสแตติกต่างกันซึ่งจำเป็นต้องเริ่มต้นทีละรายการ คุณควรใช้บล็อกสแตติก
บล็อกแบบคงที่จะดำเนินการเพียงครั้งเดียว—เมื่อโหลดคลาสลงในหน่วยความจำของคอมพิวเตอร์เป็นครั้งแรก ต่อไปนี้คือรูปแบบไวยากรณ์สำหรับบล็อกโค้ดแบบคงที่ใน Java:
static { // Code here }
มาดูตัวอย่างกันเพื่อสาธิตวิธีการทำงานของบล็อกสแตติก สมมติว่าเราถูกขอให้สร้างข้อความ A new order is incoming …
พิมพ์ไปที่คอนโซลก่อนที่โปรแกรมจะกำหนดคำสั่งให้กับบาริสต้าเพื่อให้บาริสต้ารู้ว่าต้องเตรียมตัว เราสามารถทำได้โดยการสร้างคลาสคงที่ คลาสสแตติกจะทำงานในครั้งแรกที่รันโปรแกรม
ต่อไปนี้คือตัวอย่างคลาสคงที่ที่พิมพ์ข้อความดังกล่าว จากนั้นจึงกำหนดคำสั่งให้กับบาริสต้า:
class CoffeeOrder { int baristasOnDuty = 2; static String name = "Hannah Johnson"; static { System.out.println("A new order is incoming …"); } public static void main(String[] args) { CoffeeOrder order111 = new CoffeeOrder(); System.out.println("Baristas on duty: " + baristasOnDuty); System.out.println("Assigned barista: " + order111.name); } }
รหัสของเราส่งคืน:
A new order is incoming … Baristas on duty: 2 Assigned barista: Hannah Johnson
ในโค้ดของเรา เราเริ่มต้น baristasOnDuty และตัวแปรชื่อก่อน จากนั้นโปรแกรมก็พิมพ์ข้อความ A new order is incoming … ไปที่คอนโซล ข้อความนี้ถูกเก็บไว้ในบล็อกโค้ดแบบคงที่ของเรา หลังจากที่โปรแกรมดำเนินการเนื้อหาของบล็อกแบบคงที่ โปรแกรมจะรันโปรแกรมหลักของเรา ซึ่งส่งคืนผลลัพธ์เดียวกันกับโปรแกรมหลักจากตัวอย่างที่แล้ว
บทสรุป
คีย์เวิร์ดสแตติก Java มีการใช้งานหลายอย่าง คุณสามารถใช้คีย์เวิร์ดสแตติกเพื่อสร้างเมธอดสแตติก ตัวแปรสแตติก และบล็อกโค้ดสแตติก
กวดวิชานี้มีตัวอย่าง พื้นฐานของสแตติกคีย์เวิร์ด และวิธีที่คุณสามารถใช้คีย์เวิร์ดสแตติกกับเมธอด ตัวแปร และบล็อกโค้ด หลังจากอ่านบทช่วยสอนนี้แล้ว คุณก็พร้อมที่จะเริ่มใช้คำหลักสแตติก Java อย่างมืออาชีพ