new Operator in Java

new Operator in Java: जैसाकि पहले भी बताया है कि Class Specification एक प्रकार का नया Data Type होता है और हम इस Type का प्रयोग Objects Create करने के लिए करते हैं। लेकिन किसी Class के Object को Create करने में दो Steps Use होते हैं। पहले Step में हम Class Type के Object को Declare करते हैं। Class प्रकार का ये Variable Object को Define नहीं करता है बल्कि ये एक साधारण Variable की तरह होता है, जो उस Class के किसी Object को Refer कर सकता है। दूसरे Step में हमें Object की Actual Copy प्राप्त करनी होती है और इस Actual Copy का Address प्रथम Step में Create होने वाले Variable को प्रदान किया जाता है। ये काम हम new Operator को Use करके करते हैं।

new Operator Dynamically Run Time में Object को Memory Allocate करता है और उस Allocated Memory Block का Reference Return करता है। ये Reference उस Actual Memory Block का Address होता है जो कि Class प्रकार के उस Variable को प्रदान किया जाता है। Java में Class प्रकार का हर Object Dynamically Create होता है। किसी Object को Dynamically Create करने के लिए हम निम्नानुसार Syntax का प्रयोग करते हैं:

        Box cpuCabinet = new Box();

इस एक Statement में निम्नानुसार दो Statements Combined हैं-

Box cpuCabinet;                       // Declaration of Reference to Object
cpuCabinet = new Box();      // Allocate a Box Object

पहला Statement Box प्रकार के Object का Reference Store करने के लिए cpuCabinet नाम का एक Object Create करता है। इस Statement द्वारा Create होने वाले Statement में तब तक null Initialized रहता है, जब तक कि दूसरा Statement Execute नहीं हो जाता।

यानी पहले Statement के Execution तक इस Object में किसी प्रकार की Memory Block का Address इसमें Stored नहीं है और इस Object द्वारा हम किसी प्रकार के मान को Memory में Store नहीं कर सकते हैं। यदि हम इस समय तक इस Object को Use करना चाहें तो एक Run Time Error Generate होता है।

जब दूसरा Statement Execute हो जाता है, तब हम cpuCabinet को एक Box को Represent करने वाले Object की तरह Use कर सकते हैं। लेकिन वास्तव में cpuCabinet Object में Actual Box Object के Memory Block का Address ही Stored रहता है। इन दोनों Statement के Effect को हम निम्नानुसार प्रदिर्शत कर सकते हैं-

new Operator in Java

जैसाकि पहले बताया कि new Operator निम्नानुसार Statement द्वारा Dynamically Memory Allocate करने का काम करता है:

        Class_Variable [Object]  = new ClassName( );

इस Statement में Class_Variable वह Object है जिसके लिए Memory Allocate हो रही है और ClassName() वह Class है जिसके Object को Memory Allocate की जा रही है। ClassName के बाद Parenthesis का प्रयोग होने पर इसे Constructor कहते हैं।

Constructor हर Class का एक महत्वपूर्ण हिस्सा होता है जिसकी कई विशेषताएं होती हैं। हम जितनी भी Classes Specify करते हैं उन सभी में Constructor को जरूर Define करते हैं। यदि हम ऐसा नहीं करते हैं तो Java स्वयं एक Constructor उपलब्ध करवाता है, जिसे Default Constructor कहते हैं। हमने Box Class में कोई Constructor Create नहीं किया है। इस स्थिति में Java स्वयं हमें एक Constructor उपलब्ध करवाता है, जिसका प्रयोग हम Box Class के Object Create करने के लिए कर सकते हैं, जैसाकि पिछले उदाहरण में हमने किया है।

हमने पहले कहा कि Class एक नए प्रकार का Data Type होता है जो Programmer अपनी सुविधानुसार किसी Real World Object को Computer में Logically Represent करने के लिए Create करता है। इस स्थिति में हम सोंच सकते हैं कि जिस तरह से हम Integer या float प्रकार के Variables Create करते हैं, उसी तरह से Class प्रकार के Objects Create क्यों नहीं कर सकते हैं। इसका जवाब ये है कि हम Basic प्रकार के Data Type के Variables को Objects की तरह Implement नहीं कर सकते हैं।

बल्कि ये सामान्‍य Variable की तरह Implement किए जाते हैं। ऐसा Program को Efficient बनाए रखने के लिए किया जाता है। हम समझ सकते हैं कि Class प्रकार के Object में एक से ज्यादा प्रकार के मान Store किए जा सकते हैं। इसलिए किसी Object को सामान्‍य Variable की तरह Use नहीं किया जा सकता।

new Operator Program के Run Time में Object को Memory Allocate करता है। इसका फायदा ये होता है कि Program के Run Time में यदि अधिक Objects की जरूरत हो तो अधिक Object Create किए जा सकते हैं और यदि कम Object की जरूरत हो तो हम अपनी आवश्‍यकतानुसार कम Object भी Create कर सकते हैं।

चूंकि Primary Memory की मात्रा सीमित होती है, इसलिए यदि अधिक Object Create होते हैं तो एक Run Time Error (Exception) Generate होती है। हम इस पुस्तक में जितने भी Program देखेंगे, उन सभी Programs में ऐसी कोई Problem नहीं आ,गी। लेकिन जब Real World के बडे Project बनाए जाते हैं, तब Efficiency प्राप्त करने के लिए इस प्रकार के Exception को पहले से ही Handle करने के Procedures लिखने जरूरी होती हैं।

new Operator in Java – The Object Reference

Object Reference Variable उस तरह से काम नहीं करता है जिस तरह से हम सोचते हैं। उदाहरण के लिए निम्न Code Fragment देखिए-

Box cpuCabinet = new Box();
Box hardDiskDrive = cpuCabinet;

इस Statement से दो Object Create नहीं होते हैं जो Memory में Actual Memory Occupy करें। वास्तव में इस प्रकार के Statement से केवल एक ही Object Create होता है, जो Actual Memory Reserve करता है और cpuCabinet व hardDiskDrive दोनों ही Object Variables उसी समान Actual Memory Object को Refer करते हैं। यदि हम निम्न Statement द्वारा Object cpuCabinet को null Assign करें:

cpuCabinet = null;

तो cpuCabinet Object को जो Actual Memory new Operator द्वारा Allocate हुई थी, वह Release नहीं होती है। बल्कि hardDiskDrive अभी भी उस Actual Memory को Refer कर रहा होता है। इसे हम अग्रानुसार चित्र द्वारा समझ सकते हैं।

new Operator in Java

cpuCabinethardDiskDrive दोनों ही Objects Actual Physical Memory Object के केवल Reference मात्र हैं। वास्तव में वे स्वयं Objects नहीं हैं। इनमें केवल वास्तविक Physical Memory Object का Address मात्र होता है।

इसलिए यदि हम cpuCabinet Object में null Assign कर देते हैं, तो हम वास्तव में केवल इस Object से Actual Memory Object को Refer करने वाले Address को Destroy कर रहे होते हैं। वास्तविक Physical Memory तब तक Release नहीं होती है, जब तक कि कोई भी अन्‍य Class Variable उस Memory Block को Refer कर रहा होता।

हमारे इस Code Segment में जिस Memory Block को cpuCabinet Class Variable Refer कर रहा है उसी Memory Block को hardDiskDrive Class Variable भी Refer कर रहा है। इसलिए यदि cpuCabinet Object को null Assign किया जाए, तो भी ये Object Destroy नहीं होगा।

Java Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS