- - जावा में संदर्भ द्वारा कॉल और मूल्य को समझना

जावा में संदर्भ द्वारा कॉल और मूल्य को समझना

परिचय

चूंकि अब आपने जावा में एक कक्षा की वस्तुओं को बनाने के बारे में सीखा है, इसलिए हमें यह जांचने की आवश्यकता है कि हम तरीकों को बनाते समय तर्क कैसे पारित कर सकते हैं।

में कॉल-टू-मूल्य से दृष्टिकोण, एक तर्क के मूल्य को सबरूटीन के औपचारिक पैरामीटर में कॉपी किया जाता है। उप-नियम के पैरामीटर में किए गए परिवर्तनों का तर्क पर कोई प्रभाव नहीं पड़ता है।

में कॉल-टू-संदर्भ द्वारा दृष्टिकोण, एक तर्क का संदर्भ दिया गया हैसबरूटीन के औपचारिक पैरामीटर, सबरूटीन के अंदर, संदर्भ का उपयोग कॉल में निर्दिष्ट वास्तविक तर्क तक पहुंचने के लिए किया जाता है। इसका मतलब यह है कि पैरामीटर में किए गए परिवर्तन सबरूटीन को कॉल करने के लिए उपयोग किए जाने वाले तर्क को प्रभावित करेंगे।

हम इन उदाहरणों के साथ जावा में एक विधि के लिए तर्क पास करने के तरीकों के बारे में बताएंगे।

प्रोग्राम बाय कॉल वैल्यू

class Employee{
double salary;
int age;
void incrementSalAndAge(double sal, int a){
salary = sal+10000;
age = a+7;
System.out.println("Salary on call: "+salary);
System.out.println("Salary on call: "+age);
}
}
class CallByValueDemo{
public static void main(String args[]){
Employee employee = new Employee();
double salary = 34521.86;
int age = 23;
System.out.println("Salary before call: "+salary);
System.out.println("Salary before call: "+age);
employee.incrementSalAndAge(salary,age);
System.out.println("Salary after call: "+salary);
System.out.println("Salary after call: "+age);
}
}

उत्पादन

call_by_value

संदर्भ के लिए कॉल के लिए कार्यक्रम

class Employee{
double salary;
int age;
void incrementSalAndAge(Employee emp){
salary = emp.salary+10000;
age = emp.age+7;
System.out.println("Salary on call: "+emp.salary);
System.out.println("Salary on call: "+emp.age);
}
}
class CallByRefDemo{
public static void main(String args[]){
Employee employee = new Employee();
employee.salary = 34512.37;
employee.age = 23;
System.out.println("Salary before call: "+employee.salary);
System.out.println("Salary before call: "+employee.age);
employee.incrementSalAndAge(employee);
System.out.println("Salary after call: "+employee.salary);
System.out.println("Salary after call: "+employee.age);
}
}

उत्पादन

call_by_reference

जावा कोड और आउटपुट की व्याख्या

यदि आप पहला कार्यक्रम देखते हैं, तो आप पाएंगे कि हमने एक विधि incrmentSalAndAge () लिखी है, जहाँ हम तर्कों के मान को उसी विधि के औपचारिक मापदंडों पर भेज रहे हैं। फोन करने से पहले incrmentSalAndAge(), हमने उन तर्कों के मूल्यों को छापा है जो वास्तव में पारित हो जाएंगे। फिर हमने तर्कों के मूल्यों को अपडेट किया है incrmentSalAndAge() विधि और मुद्रित।

आप देख सकते हैं कि यह अद्यतन मुद्रित होगाऔपचारिक मापदंडों के मूल्य। सबरूटीन से पीछे हटने के बाद, ये अद्यतन मूल्य अब अस्तित्व में नहीं होंगे। और यह उन तर्कों के मूल्यों को प्रिंट करेगा जो कॉल करने से पहले तर्कों के भीतर संग्रहीत थे incrmentSalAndAge()। निष्कर्ष में हम कह सकते हैं कि उप-नियम के पैरामीटर में किए गए परिवर्तनों का तर्क पर कोई प्रभाव नहीं पड़ता है।

अब, दूसरे कार्यक्रम में आप उन तर्कों में संग्रहीत मूल्यों को पारित करने के बजाय देखेंगे जिन्हें हमने वस्तु के संदर्भ में पारित किया है incrmentSalAndAge() तरीका। इस प्रकार जब आप इस संदर्भ को किसी विधि से पास करते हैं, तो इसे प्राप्त करने वाला पैरामीटर उसी ऑब्जेक्ट को संदर्भित करेगा, जिसे तर्क द्वारा संदर्भित किया गया है। आउटपुट से आप इसे आसानी से बना सकते हैं। फोन करने से पहले incrmentSalAndAge() हमारे पास तर्कों के मुद्रित मूल्य हैं। उन्होंने उन मूल्यों को मुद्रित किया है जिनके साथ तर्कों को आरंभीकृत किया गया है।

विधि के आह्वान के दौरान incrmentSalAndAge(), विधि को मानों को अद्यतन करना चाहिएऔपचारिक मापदंडों और अद्यतन मूल्य मुद्रित मिलता है। कॉल से वापस आने के बाद इसने तर्कों के लिए अद्यतन मूल्यों को मुद्रित किया है। इसलिए, पैरामीटर में किए गए परिवर्तन उप-कॉल को कॉल करने के लिए उपयोग किए जाने वाले तर्क को प्रभावित करेंगे क्योंकि दोनों तर्क और औपचारिक पैरामीटर दोनों एक ही वस्तु का संदर्भ दे रहे हैं।

याद रखें, ये अवधारणाएं समझने के लिए बहुत उपयोगी हैं जावा में कंस्ट्रक्टर्स कॉपी करें.

जावा प्रोग्रामिंग पर अधिक उपयोगी ट्यूटोरियल और निश्चित दिशानिर्देश चेकआउट करें।

टिप्पणियाँ