ตัวแปรคลาส/สแตติกเป็นของคลาส เช่นเดียวกับตัวแปรอินสแตนซ์ที่ประกาศภายในคลาส นอกเมธอดใดๆ แต่มีคีย์เวิร์ดสแตติก
สามารถเข้าถึงได้ในเวลาคอมไพล์ คุณสามารถเข้าถึงได้ก่อน/โดยไม่ต้องสร้างอินสแตนซ์ของคลาส มีฟิลด์สแตติกเพียงสำเนาเดียวที่พร้อมใช้งานทั่วทั้งคลาส นั่นคือ ค่าของฟิลด์สแตติกจะเท่ากันในทุกอ็อบเจ็กต์ คุณสามารถกำหนดฟิลด์สแตติกได้โดยใช้คีย์เวิร์ดสแตติก
หากคุณประกาศตัวแปรสแตติกในคลาส หากคุณยังไม่ได้เริ่มต้น คอมไพเลอร์ตัวแปรอินสแตนซ์จะเริ่มต้นสิ่งเหล่านี้ด้วยค่าเริ่มต้นในคอนสตรัคเตอร์เริ่มต้น
ได้ คุณยังสามารถเริ่มต้นค่าเหล่านี้ได้โดยใช้ตัวสร้าง
ตัวอย่าง
public class DefaultExample { static String name; static int age; DefaultExample() { name = "Krishna"; age = 25; } public static void main(String args[]) { new DefaultExample(); System.out.println(DefaultExample.name); System.out.println(DefaultExample.age); } }
ผลลัพธ์
Krishna 25
ประกาศขั้นสุดท้ายและคงที่
แต่ถ้าคุณประกาศตัวแปรอินสแตนซ์สแตติกและคอมไพเลอร์ Java สุดท้ายจะไม่เริ่มต้นในคอนสตรัคเตอร์เริ่มต้น ดังนั้น จำเป็นต้องเริ่มต้นตัวแปรสแตติกและตัวแปรสุดท้าย ถ้าคุณไม่สร้างข้อผิดพลาดในการคอมไพล์
ตัวอย่าง
public class DefaultExample { static final String name; static final int age; public static void main(String args[]) { new DefaultExample(); System.out.println(DefaultExample.name); System.out.println(DefaultExample.age); } }
ข้อผิดพลาดในการคอมไพล์
DefaultExample.java:2: error: variable name not initialized in the default constructor static final String name; ^ DefaultExample.java:3: error: variable age not initialized in the default constructor static final int age; ^ 2 errors
แต่ถ้าคุณพยายามที่จะเริ่มต้นตัวแปรที่ประกาศ สุดท้าย และ คงที่ คอมไพเลอร์ถือว่าเป็นความพยายามในการเริ่มต้นตัวแปรและจะเกิดข้อผิดพลาดในการคอมไพล์ขึ้น
ตัวอย่าง
public class DefaultExample { static final String name; static final int age; DefaultExample() { name = "Krishna"; age = 25; } public static void main(String args[]) { new DefaultExample(); System.out.println(DefaultExample.name); System.out.println(DefaultExample.age); } }
ข้อผิดพลาดในการคอมไพล์
OutputDeviceAssignedDefaultExample.java:5: error: cannot assign a value to final variable name name = "Krishna"; ^ DefaultExample.java:6: error: cannot assign a value to final variable age age = 25; ^ 2 errors