हम पहले ही इस तथ्य के बारे में बात कर चुके हैं कि कक्षाएं जटिल डेटा प्रकार हैं। अब कक्षाओं के दूसरे पक्ष के बारे में थोड़ी बात करते हैं - जावा मशीन द्वारा कक्षाओं को कैसे संभाला जाता है। याद रखें कि जावा में सब कुछ एक वस्तु है, यहां तक ​​कि एक वर्ग भी। एक वर्ग एक वस्तु है। क्या इससे आपको हैरानी हुई? तो चलिए जारी रखते हैं।

कक्षा को स्मृति में लोड करना

दरअसल, जब किसी वर्ग को मेमोरी में लोड किया जाता है, तो तीन विशेष "ऑब्जेक्ट्स" बनाए जाते हैं:

कक्षा को स्मृति में लोड करना

उदाहरण का संक्षिप्त विवरण:

पीला आयत:

कोड फ़ाइल को डिस्क पर ".class" एक्सटेंशन वाली फ़ाइल के रूप में संग्रहीत किया जाता है। इसमें वर्ग, उसके क्षेत्रों और विधियों के साथ-साथ बायटेकोड में संकलित विधियों के स्रोत कोड के बारे में जानकारी शामिल है।

नारंगी आयत:

जब जावा मशीन एक क्लास को मेमोरी में लोड करती है, तो यह बायटेकोड को कंप्यूटर के प्रोसेसर और ऑपरेटिंग सिस्टम के लिए विशिष्ट मशीन कोड में संकलित करती है। इस मशीन कोड तक केवल जावा मशीन की पहुंच है। जावा प्रोग्रामर के रूप में, हमारे पास इसकी पहुंच नहीं है।

हरा आयत:

जावा मशीन एक ऐसी वस्तु बनाती है जिसमें कक्षा के सभी स्थिर चर और तरीके शामिल होते हैं। आप कक्षा के नाम का उपयोग करके इस "ऑब्जेक्ट" तक पहुंच सकते हैं।

उदाहरण के लिए, जब आप लिखते हैं , तो आप कक्षा में स्थित स्थैतिक चर का जिक्र कर रहे हैं। यह वस्तु हमारी हरी आयत है। और यहीं पर स्टैटिक वेरिएबल स्टोर होता है।java.lang.Math.PIPIjava.lang.Mathjava.lang.MathPI

नीला आयत:

जब जावा मशीन किसी वर्ग के कोड को मेमोरी में लोड करती है, तो यह एक विशेष java.lang.Classवस्तु बनाता है, जो लोड की गई कक्षा के बारे में जानकारी संग्रहीत करता है: उसका नाम, विधि का नाम, फ़ील्ड का नाम और प्रकार, आदि।

"कक्षा" नाम थोड़ा भ्रमित करने वाला हो सकता है। इसे ClassInfo कहने में अधिक समझदारी होगी, क्योंकि यह वर्ग केवल भरी हुई कक्षा के बारे में कुछ जानकारी संग्रहीत करता है।

आप इस तरह के कमांड का उपयोग करके किसी भी प्रकार के क्लास ऑब्जेक्ट प्राप्त कर सकते हैं:

Class name = ClassName.class;

उदाहरण:

कोड टिप्पणी
Class a = String.class;
कक्षा Classके बारे में जानकारी के साथ वस्तु प्राप्त करेंString
Class b = Object.class;
कक्षा Classके बारे में जानकारी के साथ वस्तु प्राप्त करेंObject
Class c = Integer.class;
कक्षा Classके बारे में जानकारी के साथ वस्तु प्राप्त करेंInteger
Class d = int.class;
प्रकार Classके बारे में जानकारी के साथ वस्तु प्राप्त करेंint
Class e = void.class;
प्रकार Classके बारे में जानकारी के साथ वस्तु प्राप्त करेंvoid

आप किसी ऑब्जेक्ट से क्लास डिस्क्रिप्शन ऑब्जेक्ट का संदर्भ भी प्राप्त कर सकते हैं, क्योंकि प्रत्येक ऑब्जेक्ट में getClass()विधि होती है, जिसे वह Objectकक्षा से प्राप्त करता है।

उदाहरण:

कोड टिप्पणी
Class a = "Hello".getClass();
वस्तु के समानString.class
Class b = new Integer().getClass();
वस्तु के समानInteger.class
Class c = Boolean.TRUE.getClass();
वस्तु के समानBoolean.class