সাধারণভাবে, এর static
অর্থ " প্রকারের উদাহরণের পরিবর্তে টাইপের সাথেই যুক্ত " "
এর অর্থ আপনি কোনও ধরণের দৃষ্টান্ত তৈরি না করেই স্থির পরিবর্তনশীলকে উল্লেখ করতে পারেন এবং ভেরিয়েবলের সাথে উল্লেখ করা কোনও কোড সঠিক একই ডেটা উল্লেখ করছে। এটি একটি উদাহরণ ভেরিয়েবলের সাথে তুলনা করুন: সেক্ষেত্রে শ্রেণীর উদাহরণ অনুসারে ভেরিয়েবলের একটি স্বতন্ত্র সংস্করণ রয়েছে। উদাহরণস্বরূপ:
Test x = new Test();
Test y = new Test();
x.instanceVariable = 10;
y.instanceVariable = 20;
System.out.println(x.instanceVariable);
10 প্রিন্ট করে: y.instanceVariable
এবং x.instanceVariable
পৃথক হয়, কারণ x
এবং y
বিভিন্ন অবজেক্টকে উল্লেখ করে।
আপনি স্থির সদস্যদের রেফারেন্সের মাধ্যমে উল্লেখ করতে পারেন , যদিও এটি করা খারাপ ধারণা। আমরা যদি:
Test x = new Test();
Test y = new Test();
x.staticVariable = 10;
y.staticVariable = 20;
System.out.println(x.staticVariable);
তারপরে এটি 20 টি মুদ্রণ করবে - এখানে কেবলমাত্র একটি পরিবর্তনশীল আছে, উদাহরণস্বরূপ এক নয়। এটি এই হিসাবে এটি পরিষ্কার করা হবে:
Test x = new Test();
Test y = new Test();
Test.staticVariable = 10;
Test.staticVariable = 20;
System.out.println(Test.staticVariable);
এটি আচরণকে আরও প্রকট করে তোলে। আধুনিক আইডিইগুলি সাধারণত দ্বিতীয় তালিকাটিকে তৃতীয়তে পরিবর্তন করার পরামর্শ দেয়।
নীচের মতো মানটিকে আরম্ভ করার জন্য কোনও ইনলাইন ঘোষণার কোনও কারণ নেই, কারণ প্রতিটি উদাহরণের নিজস্ব NUMBER
কিন্তু সর্বদা একই মান (অপরিবর্তনীয় এবং একটি আক্ষরিক দিয়ে আদি) হয়। final static
সমস্ত দৃষ্টান্তের জন্য শুধুমাত্র একটি পরিবর্তনশীল থাকার চেয়ে এটি একই ।
private final int NUMBER = 10;
সুতরাং যদি এটি পরিবর্তন করতে না পারে, উদাহরণস্বরূপ একটি অনুলিপি থাকার কোনও মানে নেই।
তবে, এটি বোঝা যায় যে যদি এটির মতো কোনও কনস্ট্রাক্টারে আরম্ভ করা হয়:
// No initialization when is declared
private final int number;
public MyClass(int n) {
// The variable can be assigned in the constructor, but then
// not modified later.
number = n;
}
এখন, প্রতিটি উদাহরণের জন্য MyClass
, আমরা এর আলাদা কিন্তু অপরিবর্তনীয় মান রাখতে পারি number
।