ฟิลด์สแตติกจะเริ่มต้นในระหว่างการเตรียมใช้งาน "เฟส" ของการโหลดคลาส (การโหลดการเชื่อมโยงและการเตรียมใช้งาน) ซึ่งรวมถึงการเริ่มต้นแบบคงที่และการกำหนดค่าเริ่มต้นของฟิลด์แบบคงที่ ตัวเริ่มต้นแบบคงที่จะดำเนินการตามลำดับข้อความตามที่กำหนดไว้ในคลาส
ลองพิจารณาตัวอย่าง:
public class Test {
static String sayHello() {
return a;
}
static String b = sayHello(); // a static method is called to assign value to b.
// but its a has not been initialized yet.
static String a = "hello";
static String c = sayHello(); // assignes "hello" to variable c
public static void main(String[] arg) throws Throwable {
System.out.println(Test.b); // prints null
System.out.println(Test.sayHello()); // prints "hello"
}
}
Test.b พิมพ์null
เนื่องจากเมื่อsayHello
ถูกเรียกในขอบเขตแบบคงที่ตัวแปรคงa
ไม่ได้ถูกเตรียมใช้งาน