না, শুধু final কীওয়ার্ড ব্যবহার করে জাভাতে কনস্ট্যান্ট ডিফাইন করা যায় না। কনস্ট্যান্টের সংজ্ঞা অনুযায়ী এর মান ফিক্সড থাকতে হয় এবং পুরো প্রোগ্রামে এর শুধু একটি কপি থাকতে হয়।
final কীওয়ার্ড শুধু মান পরিবর্তন বাধা দেয়, কিন্তু মেমোরিতে প্রতিটি অবজেক্টের জন্য আলাদা কপি তৈরি হয়। আসল কনস্ট্যান্ট बनाने হলে static এবং final দুটি একসাথে ব্যবহার করতে হয়।
- Static: কম্পাইল টাইমেই মেমোরি লোড হয়, শুধু একটি কপি থাকে (ক্লাস লেভেল)।
- Final: মান একবার অ্যাসাইন হলে পরিবর্তন করা যায় না।
সঠিক কনস্ট্যান্ট ডিক্লেরেশন
class Data {
static final int integerConstant = 20;
}
public class ConstantsExample {
public static void main(String args[]) {
System.out.println("value of integerConstant: " + Data.integerConstant);
}
}
আউটপুট
value of integerConstant: 20
Static ছাড়া Final Variable (Non-static final)
যদি শুধু final ব্যবহার করা হয় (static না থাকে), তবে প্রতিটি অবজেক্টের জন্য আলাদা কপি তৈরি হয়।
উদাহরণ
class Data {
final int integerConstant = 20; // non-static final
}
public class ConstantExample {
public static void main(String args[]) {
Data obj1 = new Data();
System.out.println("value of integerConstant: " + obj1.integerConstant);
Data obj2 = new Data();
System.out.println("value of integerConstant: " + obj2.integerConstant);
}
}
আউটপুট
value of integerConstant: 20 value of integerConstant: 20
এখানে মান একই হলেও obj1 এবং obj2-এর জন্য আলাদা মেমোরি কপি তৈরি হয়েছে। কনস্ট্যান্টের সংজ্ঞা অনুযায়ী প্রোগ্রামে শুধু একটি কপি থাকা উচিত, তাই static final ব্যবহার করা আবশ্যক।
নামকরণ কনভেনশন
জাভাতে কনস্ট্যান্টের নাম সাধারণত UPPER_SNAKE_CASE ফরম্যাটে লেখা হয় (যেমন: MAX_SIZE, DEFAULT_TIMEOUT)।