Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java Static

วิธีใช้ Java Static Keyword

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

นั่นคือที่มาของคีย์เวิร์ดสแตติก Java คีย์เวิร์ดสแตติก Java ใช้เพื่อกำหนดสมาชิกของคลาสที่คุณสามารถเข้าถึงได้โดยไม่ต้องสร้างอินสแตนซ์ของคลาส

บทช่วยสอนนี้จะอธิบายพร้อมตัวอย่าง พื้นฐานของคำหลักสแตติก Java และวิธีใช้งานในโปรแกรม Java ของคุณ

คลาส Java

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

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

Java Static

ตอนนี้เราได้พูดถึงพื้นฐานของคลาส 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 อย่างมืออาชีพ