คงที่ใน Java:
คงที่เป็นตัวปรับการเข้าถึงที่ไม่ใช่ คำหลักคงที่เป็นของชั้นกว่าอินสแตนซ์ของชั้นเรียน สามารถใช้เพื่อแนบตัวแปรหรือวิธีการกับชั้นเรียน
คำหลักคงที่สามารถใช้กับ:
วิธี
ตัวแปร
คลาสที่ซ้อนภายในคลาสอื่น
บล็อกการเริ่มต้น
ไม่สามารถใช้กับ:
ชั้น (ไม่ซ้อน)
นวกรรมิก
อินเตอร์เฟซ
วิธีการชั้นในท้องถิ่น (ความแตกต่างแล้วชั้นซ้อนกัน)
วิธีการชั้นใน
ตัวแปรอินสแตนซ์
ตัวแปรท้องถิ่น
ตัวอย่าง:
ลองนึกภาพตัวอย่างต่อไปนี้ซึ่งมีตัวแปรอินสแตนซ์ชื่อนับซึ่งเพิ่มขึ้นในตัวสร้าง:
package pkg;
class StaticExample {
int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
เอาท์พุท:
1 1 1
เนื่องจากตัวแปรอินสแตนซ์ได้รับหน่วยความจำในขณะที่สร้างวัตถุแต่ละวัตถุจะมีสำเนาของตัวแปรอินสแตนซ์หากมีการเพิ่มขึ้นมันจะไม่สะท้อนกับวัตถุอื่น ๆ
ตอนนี้ถ้าเราเปลี่ยนตัวแปรอินสแตนซ์นับเป็นสแตติกโปรแกรมจะสร้างเอาต์พุตที่แตกต่างกัน:
package pkg;
class StaticExample {
static int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
เอาท์พุท:
1 2 3
ในกรณีนี้ตัวแปรแบบคงที่จะได้รับหน่วยความจำเพียงครั้งเดียวหากวัตถุใด ๆ เปลี่ยนค่าของตัวแปรแบบคงที่มันจะเก็บค่าของมัน
คงที่กับรอบชิงชนะเลิศ:
ตัวแปรโกลบอลซึ่งถูกประกาศเป็นขั้นสุดท้ายและสแตติกยังคงไม่เปลี่ยนแปลงสำหรับการดำเนินการทั้งหมด เนื่องจากสมาชิกแบบคงที่จะถูกเก็บไว้ในหน่วยความจำระดับและพวกเขาจะโหลดเพียงครั้งเดียวในการดำเนินการทั้งหมด มันเป็นเรื่องธรรมดาสำหรับวัตถุทั้งหมดในชั้นเรียน หากคุณประกาศตัวแปรแบบสแตติกเป็นครั้งสุดท้ายวัตถุใด ๆ ไม่สามารถเปลี่ยนค่าได้เนื่องจากเป็นครั้งสุดท้าย ดังนั้นตัวแปรที่ประกาศเป็นขั้นสุดท้ายและคงที่บางครั้งเรียกว่าค่าคงที่ ฟิลด์ทั้งหมดของอินเทอร์เฟซถูกเรียกว่าเป็นค่าคงที่เนื่องจากเป็นค่าสุดท้ายและคงที่โดยค่าเริ่มต้น
ทรัพยากรรูปภาพ: สุดท้ายคงที่