কম্পিউটার টিউটোরিয়াল

জাভাতে static এবং non-static ভেরিয়েবলের পার্থক্য

একটি ভেরিয়েবল আমাদের প্রোগ্রামে ম্যানিপুলেট করার জন্য নামযুক্ত স্টোরেজ প্রদান করে। 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
  1. জাভাতে কনস্ট্যান্ট (Constant) এবং ফাইনাল (Final) ভেরিয়েবলের পার্থক্য

  2. জাভাতে Collection এবং Collections-এর পার্থক্য

  3. জাভাতে স্ট্যাটিক ব্লক এবং কনস্ট্রাক্টরের পার্থক্য কী?

  4. জাভাতে import এবং static import স্টেটমেন্টের পার্থক্য কী?