ตัวแปรสแตติกจะถูกสร้างขึ้นในขณะที่โหลดคลาสแม้กระทั่งก่อนการทำงานของบล็อกสแตติก และจุดประสงค์ของบล็อกสแตติกคือการกำหนดค่าให้กับตัวแปรสแตติก ตัวแปรสแตติกเก็บค่าที่แบ่งใช้ระหว่างอินสแตนซ์ทั้งหมดของคลาสที่กำหนด และบล็อกสแตติกคือส่วนของโค้ดที่เรียกใช้งานเมื่อโหลดคลาสในครั้งแรก หากเราต้องการใช้ตรรกะใดๆ ที่จำเป็นต้องดำเนินการในขณะที่โหลดคลาสนั้น ตรรกะนั้นจะต้องวางไว้ในบล็อกสแตติก เพื่อที่มันจะถูกดำเนินการในเวลาที่โหลดคลาส
JVM ทำตามขั้นตอนด้านล่างเพื่ออ่านสแตติกสมาชิกในคลาส ::
- การระบุสมาชิกคงที่จากบนลงล่าง
- การดำเนินการกำหนดตัวแปรสแตติกและบล็อกสแตติกจากบนลงล่าง
- การดำเนินการของวิธีการหลัก
ตัวอย่าง
public class StaticFlow { static int firstNumber = 10; static { firstMethod(); System.out.println("first static block"); } public static void main(String[] args) { firstMethod(); System.out.println("main method executed"); } public static void firstMethod() { System.out.println(secondNumber); } static { System.out.println("second static block"); } static int secondNumber = 20; }
ผลลัพธ์
0 first static block second static block 20 main method executed