জাভাতে কনস্ট্যান্ট (Constant)
কনস্ট্যান্ট হলো এমন একটি ভেরিয়েবল যার মান ফিক্সড থাকে এবং পুরো প্রোগ্রামে এর শুধু একটি কপি থাকে। একবার মান অ্যাসাইন করলে প্রোগ্রামের যেকোনো জায়গা থেকে সেটি পরিবর্তন করা যায় না।
সি (C) ভাষার মতো জাভাতে সরাসরি কনস্ট্যান্ট সাপোর্ট নেই। কিন্তু 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
ফাইনাল ভেরিয়েবল (Final Variable)
যখন একটি ভেরিয়েবল final ঘোষিত করা হয়, তখন এর মান পরিবর্তন করা যায় না। পরিবর্তন চেষ্টা করলে কম্পাইল টাইম এরর হয়।
উদাহরণ
public class FinalExample {
public static void main(String args[]) {
final int num = 200;
num = 2544; // কম্পাইল এরর
}
}
আউটপুট
FinalExample.java:4: error: cannot assign a value to final variable num
num = 2544;
^
1 error
মূল পার্থক্য: কনস্ট্যান্ট vs ফাইনাল ভেরিয়েবল
| বিষয় | Constant (static final) | Final Variable (only final) |
|---|---|---|
| মেমোরি কপি | পুরো প্রোগ্রামে শুধু একটি কপি (ক্লাস লেভেল) | প্রতিটি অবজেক্টের জন্য আলাদা কপি তৈরি হয় |
| অ্যাক্সেস | ক্লাস নাম দিয়ে অ্যাক্সেস (Data.integerConstant) | অবজেক্ট রেফারেন্স দিয়ে অ্যাক্সেস (obj.integerConstant) |
| ইনিশিয়ালাইজেশন | ডিক্লেরেশনের সময় বা স্ট্যাটিক ব্লকে | কনস্ট্রাক্টরে বা ডিক্লেরেশনের সময় |
উদাহরণ: Final Variable (non-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 ব্যবহার করতে হয়।