यह समझने के लिए कि जावा में अशक्त का क्या अर्थ है, आइए संख्याओं के साथ सादृश्य देखें: संख्या 0 किसी चीज़ की अनुपस्थिति का प्रतीक है, और जब संदर्भ डेटा प्रकारों की बात आती है तो अशक्त का अर्थ वही होता है। यदि एक संदर्भ प्रकार (जैसे स्ट्रिंग , ऑब्जेक्ट , या स्ट्रिंगबिल्डर ) का एक क्षेत्र स्पष्ट रूप से एक मान निर्दिष्ट नहीं किया गया है, तो आदिम प्रकार के अनुरूप, यह एक डिफ़ॉल्ट मान प्राप्त करता है, और वह मान शून्य है :

कोड कंसोल आउटपुट
public class Solution {

    public static int i;
    public static String s;

    public static void main(String[] args) {
        System.out.println(i);
        System.out.println(s);
    }
}
0
अशक्त

लेकिन अगर आप इस तरह एक सरणी घोषित करते हैं:

String[] strings = new String[12];

एक सरणी बनाई जाएगी जिसमें 12 तत्व होंगे, और वे सभी शून्य होंगे :

कोड कंसोल आउटपुट
public class Solution {
    public static void main(String[] args) {
        String[] strings = new String[12];

        for (int i = 0; i < strings.length; i++) {
            System.out.println("Element " + i + ":" + strings[i]);
        }
    }
}
तत्व 0: अशक्त
तत्व 1: अशक्त
तत्व 2: अशक्त
तत्व 3: अशक्त
तत्व 4: अशक्त
तत्व 5: अशक्त
तत्व
6: अशक्त
तत्व 7: अशक्त तत्व 8: अशक्त
तत्व 9: अशक्त
तत्व 10: अशक्त
तत्व 11: अशक्त

जैसा कि आप देख सकते हैं, जब एक स्ट्रिंग के साथ जोड़ा जाता है, तो शून्य मान स्ट्रिंग " नल " बन जाता है। उस ने कहा, अगर आप इस पर toString() विधि कहते हैं, जैसे:

String[] strings = null;
System.out.println(strings.toString());

तब आपको एक NullPointerException मिलेगी (हम बाद में अपवादों पर विस्तार से चर्चा करेंगे)। वही होता है यदि आप किसी अन्य विधि को शून्य पर कॉल करने का प्रयास करते हैं (अपवाद स्थिर विधियां हैं, जिन्हें आप जल्द ही जान पाएंगे):

public static void main(String[] args) {
    StringBuilder sb = null;
    sb.append("test"); // This will compile, but there will be a runtime error
}

अशक्त , अन्य बातों के अलावा, एक आरक्षित खोजशब्द (जैसे सार्वजनिक या स्थिर ) है, इसलिए आप एक चर, विधि, या अशक्त नामक वर्ग नहीं बना सकते । अन्य कीवर्ड की तरह, यह कीवर्ड केस-संवेदी है (आपने देखा होगा कि हम हर जगह लोअरकेस में नल लिखते हैं)। इसका मत:

String firstName = Null; // Compilation error
String secondName = NULL; // Compilation error
String fullName = null; // This will compile

आइए देखें कि आप और क्या कर सकते हैं और शून्य के साथ नहीं कर सकते हैं :

  • आप किसी भी संदर्भ के लिए अशक्त असाइन कर सकते हैं :

    StringBuilder sb = null;
  • शून्य को किसी संदर्भ प्रकार में डाला जा सकता है:

    String s = (String) null; // This will compile, but doing this doesn't make any sense :)
  • शून्य को आदिम चर को नहीं सौंपा जा सकता है:

    int i = null; // This won't compile
  • शून्य की तुलना == और != के प्रयोग से की जा सकती है

  • शून्य == शून्य सत्य लौटाता है

पिछले पाठों में, हमने इस बारे में बात की थी कि कैसे जावा में सब कुछ एक वस्तु है, और प्रत्येक वस्तु का एक प्रकार है।

हम इस संबंध में अशक्त के बारे में क्या कह सकते हैं ? शून्य एक निश्चित प्रकार का शाब्दिक है, और इस प्रकार का कोई नाम नहीं है। और चूंकि इस प्रकार का कोई नाम नहीं है, इसलिए इस प्रकार के एक चर को घोषित करना या इसे कास्ट करना असंभव है। इस प्रकार, अशक्त इस अनाम प्रकार का एकमात्र प्रतिनिधि है। व्यवहार में, हम इस प्रकार को अनदेखा कर सकते हैं, और अशक्त को एक विशेष शाब्दिक के रूप में सोच सकते हैं जिसे किसी भी संदर्भ चर को सौंपा जा सकता है।

याद रखने वाली चीज़ें:

  • संदर्भ डेटा प्रकारों के लिए शून्य डिफ़ॉल्ट मान है
  • शून्य का अर्थ है "कोई मूल्य नहीं"
  • यदि हम किसी ऑब्जेक्ट पर किसी भी विधि को कॉल करते हैं जिसका मान शून्य है , कोड संकलित होगा लेकिन रनटाइम पर हमें एक NullPointerException मिलेगा ।