একটি স্ট্যাটিক ভেরিয়েবল ক্লাস লোডিংয়ের সময় তৈরি হয় এমনকি স্ট্যাটিক ব্লক এক্সিকিউশনের আগে এবং স্ট্যাটিক ব্লকর উদ্দেশ্য হলো স্ট্যাটিক ভেরিয়েবলগুলোর ভ্যালু অ্যাসাইন করা। একটি স্ট্যাটিক ভেরিয়েবল একটি ভ্যালু স্টোর করে যা ক্লাসের সকল ইনস্ট্যান্সের মধ্যে শেয়ার্ড এবং একটি স্ট্যাটিক ব্লক হলো কোডের একটি সেকশন যা ক্লাস প্রথম লোড হওয়ার সময় এক্সিকিউট হয়। আমাদের যেকোনো লজিক ক্লাস লোডিংয়ের সময় এক্সিকিউট করতে হলে সেটি স্ট্যাটিক ব্লকের ভিতরে রাখতে হবে যাতে ক্লাস লোডিংয়ের সময় সেটি এক্সিকিউট হয়।
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