একটি ভেরিয়েবল আমাদের প্রোগ্রামে ম্যানিপুলেট করার জন্য নামযুক্ত স্টোরেজ প্রদান করে। Java-তে প্রতিটি ভেরিয়েবলের একটি নির্দিষ্ট টাইপ থাকে, যা ভেরিয়েবলের মেমরি সাইজ ও লেয়াউট, সেটিতে সংরক্ষণযোগ্য মানের রেঞ্জ এবং প্রয়োগযোগ্য অপারেশনগুলো নির্ধারণ করে।
Static Variable (স্ট্যাটিক ভেরিয়েবল)
একটি static variable কে ক্লাস ভেরিয়েবল (class variable) ও বলা হয়। এটি ক্লাসের সব অবজেক্টের মধ্যে কমন (common) থাকে এবং এই ভেরিয়েবলকে ক্লাসের নাম দিয়েও অ্যাক্সেস করা যায়।
Non-Static Variable (নন-স্ট্যাটিক ভেরিয়েবল)
একটি ক্লাসের যে কোনো ভেরিয়েবল static না হলে সেটাকে non-static variable বা instance variable বলা হয়।
Static এবং Non-Static Variable-এর মধ্যে গুরুত্বপূর্ণ পার্থক্য
| ক্র. নং | কী | Static | Non-Static |
|---|---|---|---|
| ১ | অ্যাক্সেস (Access) | Static variable স্ট্যাটিক এবং নন-স্ট্যাটিক মেম্বার ফাংশন দুটোই থেকে অ্যাক্সেস করা যায়। | Non-static variable স্ট্যাটিক মেম্বার ফাংশন থেকে অ্যাক্সেস করা যায় না। |
| ২ | শেয়ারিং (Sharing) | Static variable গ্লোবাল ভেরিয়েবলের মতো কাজ করে এবং ক্লাসের সব অবজেক্টের মধ্যে শেয়ারড থাকে। | Non-static variable স্রিষ্টি করা ইনস্ট্যান্স অবজেক্টের জন্য নির্দিষ্ট (specific) থাকে। |
| ৩ | মেমরি অ্যালোকেশন (Memory Allocation) | Static variable কম জায়গা নেয় এবং মেমরি অ্যালোকেশন একবারই হয় (ক্লাস লোডিংয়ের সময়)। | Non-static variable বেশি জায়গা নিতে পারে। মেমরি অ্যালোকেশন রানটাইমে হয় (অবজেক্ট létre হয়ার সময়)। |
| ৪ | কীওয়ার্ড (Keyword) | Static variable ডিক্লেয়ার করতে static কীওয়ার্ড ব্যবহার করতে হয়। |
নরমাল ভেরিয়েবল ডিক্লেয়ার করতে কোনো স্পেশাল কীওয়ার্ড লাগে না। |
Static vs Non-Static Variable উদাহরণ
JavaTester.java
public class JavaTester {
public int counter = 0;
public static int staticCounter = 0;
public JavaTester(){
counter++;
staticCounter++;
}
public static void main(String args[]) {
JavaTester tester = new JavaTester();
JavaTester tester1 = new JavaTester();
JavaTester tester2 = new JavaTester();
System.out.println("Counter: " + tester2.counter);
System.out.println("Static Counter: " + tester2.staticCounter);
}
}
আউটপুট
Counter: 1 Static Counter: 3