Java this कीवर्ड का उपयोग कैसे करें
जब आप Java में कोडिंग शुरू करते हैं, तो आप मेथड्स या कंस्ट्रक्टर्स में this कीवर्ड का उपयोग देखेंगे। this कीवर्ड मेथड्स या कंस्ट्रक्टर्स के अंदर वर्तमान ऑब्जेक्ट को संदर्भित करता है, और Java में इसके व्यापक उपयोग हैं।
इस ट्यूटोरियल में, आप Java this कीवर्ड के बारे में जानेंगे और यह कैसे और क्यों उपयोग किया जाता है। हम आर्टिकल के दौरान कुछ उदाहरणों का भी संदर्भ देंगे ताकि this कीवर्ड को क्रिया में प्रदर्शित किया जा सके।
Java मेथड्स और कंस्ट्रक्टर्स
मेथड्स और कंस्ट्रक्टर्स Java में प्रोग्रामिंग के दो महत्वपूर्ण हिस्से हैं।
फंक्शन्स, या ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में उन्हें मेथड्स कहा जाता है, कोड के ब्लॉक होते हैं जो एक विशिष्ट कार्य करते हैं। उदाहरण के लिए, एक मेथड, जब निष्पादित होता है, तो array की सामग्री को कंसोल पर प्रिंट कर सकता है, या प्रोग्राम में यूजर इनपुट की सुविधा प्रदान कर सकता है।
यहाँ Java में एक मेथड का उदाहरण है जो कंसोल पर It's Monday! प्रिंट करता है:
public class PrintMessage { public static void main(String[] args) { System.out.println("It's Monday!"); } }
जब हम अपना कोड निष्पादित करते हैं, तो कंसोल पर निम्न आउटपुट लौटाया जाता है: It's Monday!
कंस्ट्रक्टर्स मेथड्स के समान होते हैं और जब कोई ऑब्जेक्ट प्रोग्राम में इंस्टेंटिएट या बनाया जाता है तो आह्वान किए जाते हैं। यहाँ एक कंस्ट्रक्टर का उदाहरण है जो day नामक इंस्टेंस वेरिएबल के मान को Monday पर सेट करता है जब Monday का इंस्टेंस इंस्टेंटिएट होता है और कंसोल पर It's, उसके बाद सप्ताह का दिन प्रिंट करता है:
class Monday { private Monday() { day = "Monday"; } public static void main(String[] args) { Monday day_of_the_week = new Monday(); System.out.println("It's " + day_of_the_week.day); } }
हमारा कोड लौटाता है: It's Monday!
यदि आप कंस्ट्रक्टर्स के बारे में अधिक जानने में रुचि रखते हैं, तो आप Java कंस्ट्रक्टर्स पर हमारा पूरा गाइड पढ़ सकते हैं। अब जब हमने Java मेथड्स और कंस्ट्रक्टर्स की मूल बातें देख ली हैं, तो हम this कीवर्ड पर चर्चा शुरू कर सकते हैं और आप इसे अपने कोड में कैसे उपयोग कर सकते हैं।
Java this कीवर्ड
Java में, this कीवर्ड मेथड या कंस्ट्रक्टर के अंदर वर्तमान ऑब्जेक्ट को संदर्भित करता है।
इसे समझाने के लिए, आइए ऊपर से अपने उदाहरण कंस्ट्रक्टर का उपयोग करें जो कंसोल पर सप्ताह का दिन प्रिंट करता है। नीचे के उदाहरण में, हमने this का मान और हमारे द्वारा इंस्टेंटिएट किए गए Monday() ऑब्जेक्ट का मान प्रिंट किया है:
class Monday { private String day; private Monday() { day = "Monday"; System.out.println(this); } public static void main(String[] args) { Monday day_of_the_week = new Monday(); System.out.println("It's " + day_of_the_week.day); System.out.println(day_of_the_week); } }
हमारा कोड निम्न आउटपुट देता है:
Main@d716361 It's Monday Main@d716361
हमारे आउटपुट में पहली लाइन this का मान है, जो Monday() ऑब्जेक्ट के इंस्टेंटिएट होने पर कंसोल पर प्रिंट होता है। दूसरी लाइन It's प्रिंट करने का परिणाम है, जिसके बाद हमारे द्वारा घोषित day_of_the_week ऑब्जेक्ट में day का मान होता है। अंत में, हम day_of_the_week ऑब्जेक्ट का मान प्रिंट करते हैं।
जैसा कि आप देख सकते हैं, this का मान और day_of_the_week ऑब्जेक्ट समान हैं। इसका मतलब है कि this कीवर्ड मेथड या कंस्ट्रक्टर के अंदर वर्तमान ऑब्जेक्ट को संदर्भित करता है।
Java this के उपयोग के मामले
दो मुख्य स्थितियाँ हैं जहां this कीवर्ड का उपयोग मूल्यवान है। ये हैं:
- वेरिएबल नामों को अस्पष्ट करने के लिए this का उपयोग
- आर्गुमेंट के रूप में this पास करना
this कीवर्ड का एक वेरिएंट, this(), कंस्ट्रक्टर्स को ओवरलोड करते समय भी उपयोग किया जाता है। हालांकि, यह this का अधिक उन्नत उपयोग है, इसलिए हम इस आर्टिकल में इस पर चर्चा नहीं करेंगे।
वेरिएबल नामों को अस्पष्ट करने के लिए this का उपयोग
Java में एक ही स्कोप के अंदर दो या अधिक वेरिएबल्स का एक ही नाम नहीं हो सकता। इसका मतलब है कि यदि आप दो वेरिएबल्स घोषित करने का प्रयास करते हैं और एक ही नाम का उपयोग करते हैं, तो आपके प्रोग्राम का लॉजिक प्रभावित होगा।
हालांकि, हम this मेथड का उपयोग करके इस सीमा को दरकिनार कर सकते हैं। this हमें एक विशिष्ट वेरिएबल को ऑब्जेक्ट में असाइन करने की अनुमति देता है, जो हमें ऑब्जेक्ट में वेरिएबल के मान और प्रारंभिक वेरिएबल के मान दोनों को स्टोर करने देता है।
आइए एक उदाहरण के माध्यम से समझते हैं कि यह कैसे काम करता है। मान लीजिए हम एक प्रोग्राम बना रहे हैं जो पांचवीं कक्षा के एक छात्र का नाम ट्रैक करता है जिसे ऑनर रोल में जोड़ा जा रहा है। यह एप्लिकेशन छात्र का नाम कंसोल पर प्रिंट करना चाहिए।
यहाँ इस एप्लिकेशन को बनाने के लिए हम उपयोग करेंगे:
class HonorRoll { String studentName; HonorRoll(String studentName) { this.studentName = studentName; } public static void main(String[] args) { HonorRoll alex = new HonorRoll("Alex"); System.out.println("New honor roll inductee: " + alex.studentName); } }
जब हम अपना प्रोग्राम चलाते हैं, तो निम्न लौटाया जाता है:
New honor roll inductee: Alex
इस उदाहरण में, हम HonorRoll मेथड में छात्र के नाम को ट्रैक करने के लिए this का उपयोग करते हैं। हम studentName कंस्ट्रक्टर पैरामीटर के मान (जो ऊपर के उदाहरण में Alex है) को this.studentName वेरिएबल में असाइन करने के लिए निम्न लाइन का उपयोग करते हैं। यदि हम ऐसा नहीं करते, तो निम्न लौटाया जाएगा:
New honor roll inductee: null
ऐसा इसलिए है क्योंकि, हमारे HonorRoll मेथड के लिए छात्र का नाम स्टोर करने के लिए, हमें Java कंपाइलर से किसी भी अस्पष्टता को दूर करने के लिए this का उपयोग करने की आवश्यकता है। इसलिए, यदि हम अपने कोड से this शब्द हटा देते हैं, तो हमें null मान मिलता है।
आर्गुमेंट के रूप में this पास करना
this कीवर्ड का उपयोग अक्सर मेथड या कंस्ट्रक्टर में वर्तमान ऑब्जेक्ट को दूसरे मेथड में पास करने के लिए किया जाता है।
मान लीजिए हम एक एप्लिकेशन बना रहे हैं जो ट्रैक करता है कि स्थानीय कॉफी शॉप के पास कॉफी बीन्स के कितने बैग स्टॉक में हैं। यह एप्लिकेशन कॉफी शॉप के मालिक को स्टॉक में बचे बैग्स के कुल में जोड़ने की अनुमति देनी चाहिए, जिसका उपयोग तब किया जाएगा जब अधिक स्टॉक उपलब्ध हो जाता है। यहाँ वह कोड है जिसका उपयोग हम इस एप्लिकेशन को बनाने के लिए कर सकते हैं:
class AddStock { int stockToAdd; int stockTotal; AddStock(int stockToAdd, int stockTotal) { this.stockToAdd = stockToAdd; this.stockTotal = stockTotal; System.out.println("Current stock: " + this.stockTotal); calculateNewStock(this); System.out.println("New stock: " + this.stockTotal); } void calculateNewStock(AddStock s) { s.stockTotal += s.stockToAdd; } } class Main { public static void main(String[] args) { AddStock newStockValue = new AddStock(10, 9); } }
हमारा कोड लौटाता है:
Current stock: 9 New stock: 19
आइए कोड को समझते हैं। हमारे कोड में, हमने AddStock नामक एक क्लास परिभाषित की है। इस क्लास में एक मेथड है जो दो मान लेता है—stockToAdd और stockTotal—और कॉफी शॉप के पास स्टॉक में कॉफी के कितने बैग हैं, इसकी गणना करने के लिए calculateNewStock() मेथड को आह्वान करता है।
फिर हम Main() क्लास का उपयोग करके AddStock क्लास का एक इंस्टेंस इनिशियलाइज़ करते हैं और दो मानों को एक साथ जोड़ते हैं: 10 और 9। हमारे प्रोग्राम के निष्पादित होने के बाद, हमारा कोड हमारे द्वारा निर्दिष्ट दो मानों को जोड़ता है—जोड़ने के लिए स्टॉक और स्टॉक का वर्तमान कुल, क्रमशः—और कंसोल पर वर्तमान स्टॉक और संशोधित स्टॉक लेवल दोनों प्रिंट करता है।
इस उदाहरण में, this कीवर्ड का उपयोग आर्गुमेंट के रूप में किया जाता है जब हम calculateNewStock() मेथड को कॉल करते हैं। यह हमें AddStock क्लास में जिन वेरिएबल्स के साथ काम कर रहे हैं, उन्हें calculateNewStock() मेथड में पास करने की अनुमति देता है, जिसे संशोधित स्टॉक लेवल की गणना करने के लिए उन वेरिएबल्स की आवश्यकता होती है।
निष्कर्ष
Java this कीवर्ड मेथड या कंस्ट्रक्टर के अंदर वर्तमान ऑब्जेक्ट को संदर्भित करता है। Java में, this कीवर्ड के दो मुख्य उपयोग हैं: वेरिएबल नामों को अस्पष्ट करना, और आर्गुमेंट के रूप में this पास करना।
इस ट्यूटोरियल ने उदाहरणों के संदर्भ में चर्चा की कि उन तीन संदर्भों में Java this कीवर्ड का उपयोग कैसे करें। अब आप Java this कीवर्ड का उपयोग एक्सपर्ट की तरह शुरू करने के लिए ज्ञान से लैस हैं।