एक बार वेरिएबल को final डिक्लेयर करने के बाद, इसे इनिशियलाइज़ करने के बाद आप इसके वैल्यू को आगे मॉडिफाई नहीं कर सकते। इसके अलावा, इंस्टेंस वेरिएबल्स की तरह, final वेरिएबल्स डिफ़ॉल्ट वैल्यूज़ से इनिशियलाइज़ नहीं होते।
इसलिए, final वेरिएबल्स को डिक्लेयर करते ही इनिशियलाइज़ करना अनिवार्य है। यदि नहीं, तो कंपाइल टाइम एरर जनरेट होगा।
उदाहरण
public class FinalExample {
final int j;
public static void main(String args[]) {
FinalExample obj = new FinalExample();
System.out.println(obj.j);
}
}
कंपाइल टाइम एरर
FinalExample.java:5: error: non-static variable j cannot be referenced from a static context System.out.println(j); ^ 1 error
Final वेरिएबल को इनिशियलाइज़ करना
आप final वेरिएबल को 4 तरीकों से इनिशियलाइज़ कर सकते हैं:
डिक्लेयर करते समय।
public class FinalExample {
final int j = 100;
public static void main(String args[]) {
FinalExample obj = new FinalExample();
System.out.println(obj.j);
}
}
आउटपुट
100
Final मेथड्स का उपयोग करके।
import java.util.Scanner;
public class FinalExample {
final int num = getNum();
public static final int getNum() {
System.out.println("Enter the num value");
return new Scanner(System.in).nextInt();
}
public static void main(String args[]) {
FinalExample obj = new FinalExample();
System.out.println(obj.num);
}
}
आउटपुट
Enter the num value 20 20
कंस्ट्रक्टर्स का उपयोग करके
public class FinalExample {
final int num;
public FinalExample(int num) {
this.num = num;
}
public static void main(String args[]) {
FinalExample obj = new FinalExample(20);
System.out.println(obj.num);
}
}
आउटपुट
20
इंस्टेंस इनिशियलाइज़ेशन ब्लॉक्स का उपयोग करके
public class FinalExample {
final int num;
{
num = 500;
}
public static void main(String args[]) {
FinalExample obj = new FinalExample();
System.out.println(obj.num);
}
}
आउटपुट
500
final मेथड के मामले को छोड़कर, यदि आप अन्य तीनों तरीकों में से किसी में final वेरिएबल को इनिशियलाइज़ करते हैं तो यह क्लास को इंस्टेंशिएट करते ही इनिशियलाइज़ हो जाएगा।