Pass by Value vs Pass by Reference In Hindi
जावा फंक्शन प्रोग्रामिंग में यूजर क्रिएटेड फंक्शन प्रोगाम में डिक्लेअर एक्चुअल और फॉर्मल वेरिएबल आर्गुमेंट पास बाय वैल्यू और पास बाय रेफरेंस के माध्यम से फंक्शन मेथड में पास किये जाते है. जिसमे एक्चुअल आर्गुमेंट फॉर्मल मेथड आर्गुमेंट के रूप में पास किए जाते हैं। जहा पास बाय वैल्यू और पास बाय रेफरेंस किसी यूजर डिक्लेअर फंक्शन मेथड के इनर वेरिएबल में किए गए मॉडिफिकेशन फंक्शन मेथड के आउटर वेरिएबल को कैसे डायरेक्ट या इन डायरेक्ट इम्पैक्ट करते हैं।

Pass by value reference in Java-concept.
- जावा प्रोग्रामिंग में यूजर डिक्लेअर फंक्शन मेथड में वेरिएबल आर्गुमेंट पास करने के लिए डिफ़ॉल्ट रूप से पास बाय वैल्यू रेफेरेंस मेथड का यूज़ किया जाता है. लेकिन फंक्शन मेथड में क्या और कैसे वैल्यू आर्गुमेंट पास होता है, यह पास किए जा रहे या यूज़ किए जा रहे फंक्शन डाटा टाइप के टाइप पर डिपेंड करता है.
- Primitive data types (e.g., int, double, char) – जब किसी जावा प्रोग्राम में कोई प्रिमिटिव डाटा टाइप वैल्यू किसी फंक्शन मेथड में पास की जाती है, तो उस पास में होने वाले फंक्शन आर्गुमेंट वैल्यू की एक कॉपी क्रिएट की जाती है। यूजर फंक्शन मेथड के अंदर डिक्लेअर वेरिएबल पैरामीटर आर्गुमेंट में पास किए गए मॉडिफिकेशन मेथड के आउटर में ओरिजिनल वैल्यू को इम्पैक्ट नहीं करते हैं।
- Object references (e.g., string, array, custom object) – जब यूजर डिक्लेअर फंक्शन मेथड में कोई स्ट्रिंग, ऐरे, या कस्टम ऑब्जेक्ट वैल्यू पास की जाती है, तो इस प्रोसेस के दौरान डिक्लेअर फंक्शन ऑब्जेक्ट के रेफरेंस की एक कॉपी क्रिएट हो जाती है. जैसे कि रियल एक ऑब्जेक्ट हो। इसका अर्थ है कि फंक्शन ऑब्जेक्ट मेथड के पास यूज़ ओरिजिनल ऑब्जेक्ट का डायरेक्ट एक्सेस होता है. जिसमे यूज़ स्ट्रिंग, ऐरे, या कस्टम ऑब्जेक्ट की करंट स्टेट फील्ड/एट्रिब्यूट में किये किसी भी प्रकार के मॉडिफिकेशन ओरिजिनल ऑब्जेक्ट को डायरेक्ट इम्पैक्ट नहीं करते है। जैसा की, इस प्रोसेस में यदि ऑब्जेक्ट रेफरेंस को फंक्शन मेथड के अंदर रीअसाइन किया गया है. तो डिक्लेअर फंक्शन मेथड के आउटर में ओरिजिनल रेफरेंस पर कोई स्पेशल इम्पैक्ट नहीं होता है।
Passing a value with a primitive data type in Java programming.
Example of a primitive data type value in a Java function.
public class Main
{
public static void editedValue(int integer) {
integer = 1; // here we modify the local copy of variable
System.out.println(“\n inner side of value function method – ” + integer);
}
public static void main(String[] args) {
int p = 2;
editedValue(p); // here it Passes a copy of p variable
System.out.println(“\n outer side value After function method call – ” + p); // here p variable value remains 2
}
}
Explaining primitive data type value.
- यहाँ इस प्रोगाम में वेरिएबल p को वैल्यू के रूप में पास किया जाता है, जिसका अर्थ है कि फंक्शन मेथड editedValue(p) वेरिएबल को कॉल करने पर p वेरिएबल की एक कॉपी क्रिएट हो जाती है।
- यहाँ डिक्लेअर editedValue() फंक्शन मेथड के अंदर, इन्टिजर वेरिएबल की एक लोकल कॉपी से रिप्लेस हो जाती है, लेकिन इस प्रोसेस के दौरान मेन फंक्शन मेथड में p वेरिएबल पे कोई इम्पैक्ट नहीं होता है।
Primitive data type value conclusion.
- Pass by Value – फंक्शन मेथड में प्रिमिटिव डाटा टाइप के लिए, डिक्लेअर वेरिएबल वैल्यू की सिर्फ़ एक कॉपी पास की जाती है, और इस प्रोसेस के दौरान ओरिजिनल वेरिएबल वैल्यू बिना मॉडिफाई हुए रहती है।
Pass by Value References with Objects in Java Function Methods.
जावा प्रोग्राम में यूजर डिक्लेअर फंक्शन ऐरे,स्ट्रिंग, या कस्टम ऑब्जेक्ट्स वैल्यू पास करने के लिए Pass by value फंक्शन मेथड का यूज़ किया जाता है, यहाँ पास की गई फंक्शन मेथड ऑब्जेक्ट वैल्यू ऑब्जेक्ट का रेफरेंस एड्रेस होती है, न कि रियल टाइम ऑब्जेक्ट। ये फंक्शन प्रोगाम के बैकग्राउंड में कॉल बाय रेफ़्रेन्स बिहेवियर को जनरेट करती है. जो की प्रोग्राम में Pass by reference जैसा बिहेव करता है. जबकि रियल में यह अभी भी Pass by value मेथड के जैसे ही होती है।
Example of the Pass by Value object method in a Java program.
class Employee {
String emp_name;
Employee(String emp_name) {
this.name = emp_name;
}
}
public class {
public static void modifyName(Employee e) {
e.name = “Bhavishi”; // here it Change the name of the function object
System.out.println(“\n here inner function method – ” + e.name);
}
public static void main(String[] args) {
Employee employee = new Employee(“Harry”);
modifyName(employee); // here it Passes the reference to employee function method
System.out.println(“\n here After function method call – ” + employee.name); // here employee name is modify with “Bhavishi”
}
}
Explaining the Pass by Value object method.
- इस प्रोग्राम में डिक्लेअर वेरिएबल employee एक फंक्शन मेथड ऑब्जेक्ट है। जब जावा यूजर इसे modifyName(Employee e) फंक्शन मेथड से पास करते हैं. तो इस प्रोसेस में वेरिएबल रेफरेंस के ऑब्जेक्ट को पास कर रहे होते हैं, डायरेक्ट अपने ऑब्जेक्ट को नहीं।
- फंक्शन मेथड के अंदर, जावा यूजर ऑब्जेक्ट की स्टेट जैसे की, उसके फील्ड्स को मॉडिफाई कर सकते हैं। क्योंकि इसमें main फंक्शन में ओरिजिनल ऑब्जेक्ट रेफरेंस और modifyName में रेफरेंस दोनों एक ही ऑब्जेक्ट को डायरेक्ट पॉइंट करते हैं. इस वजह से ऑब्जेक्ट के name फील्ड में किए गए फंक्शन मेथड के बाहर प्रीव्यू होते हैं।
- जैसा की, यदि जावा यूजर अपने से ऑब्जेक्ट रेफरेंस को मॉडिफाई करते हैं. जैसे, e = new Employee(“Siddhi”)), तो यह फंक्शन मेथड के आउटर में ओरिजिनल वेरिएबल रेफरेंस पर कोई डायरेक्ट इम्पैक्ट नहीं पड़ता है।
Result of the Pass by Value Object Method.
Pass by value with objects – जब किसी जावा फंक्शन मेथड में किसी डिक्लेअर ऑब्जेक्ट वैल्यू को पास करते हैं, तो उसमे ऑब्जेक्ट का रेफरेंस वैल्यू से पास होता है। यह प्रोसेस जावा यूजर को डिक्लेअर ऐरे, स्ट्रिंग, या कस्टम ऑब्जेक्ट की स्टेट उसकी फील्ड्स को मॉडिफाई करने की परमिशन प्रोवाइड करता है. जबकि यदि जावा यूजर फंक्शन मेथड के इनर में किसी नए रेफरेंस ऑब्जेक्ट को पॉइंट करने के लिए रेफरेंस को रीअसाइन करते हैं, तो यह फंक्शन मेथड के आउटर में ओरिजिनल रेफरेंस वैल्यू पर कोई इम्पैक्ट नहीं करता है।
Main Differences among Pass by Value and Pass by Reference in function method
| Feature | Pass by Value function method | Pass by Reference function method |
| What is passed? | In pass by value function method, A copy of the parameter variable value for primitives’ data type or the reference for objects is passed. | In the pass by reference function method, the actual reference to the array, string, or custom data object the address in memory is passed. |
| Impact on Primitive Types | In pass by value function method, the original declare variable value is not affected during process. Any custom changes inside the function method do not direct impact on the original variable. | pass by reference function method, do not impact primitive data type behaviour, because it works on object array, string or custom data types only. |
| Impact on Objects | In pass by value function method, the reference to the object is passed by value. When modifying the object’s state, it will direct affect the original object, but when you reassigning it, the reference does not affect the original reference impact. | In the pass by reference function method, when the Modifying the object via the reference affects the original object value, and when you reassigning the reference will affect the caller as well. |
| Java process | In pass by value function method, it Always pass by value default in Java function method program, it depends on the whether the parameter is a primitive or an object data type reference. | pass by reference function method, this is not directly supported in Java object data type, but Java does not have pass-by-reference for primitives or object references data types. |
Conclusion of Pass by Value vs. Pass by Reference.
- जावा फंक्शन मेथड में ज्यादातर पास-बाय-वैल्यू रेफरेंस का यूज़ होता है, जबकि इसमें पास की गई फंक्शन मेथड वेरिएबल वैल्यू इसके यूज़ के आधार पर अलग अलग हो सकती है. जैसे कि, यदि जावा प्रोग्रामर प्रिमिटिव डाटा टाइप के साथ काम कर रहे हैं, या रेफ़्रेन्स ऑब्जेक्ट के साथ हो।
- जावा प्रोग्रामिंग में प्रिमिटिव टाइप के लिए, जावा वेरिएबल की वैल्यू की एक कॉपी पास करता है। यूजर डिक्लेअर फंक्शन मेथड के अंदर किए गए मॉडिफिकेशन ओरिजिनल वेरिएबल पर कोई डायरेक्ट इम्पैक्ट नहीं करते हैं।
- जावा ऑब्जेक्ट रेफ़्रेन्स के लिए, जावा फंक्शन मेथड में डिक्लेअर ऐरे, स्ट्रिंग, या कस्टम ऑब्जेक्ट रेफरेंस वेरिएबल एड्रेस की एक कॉपी को पास करते है। यह प्रोसेस कस्टम ऑब्जेक्ट के करंट स्टेट में मॉडिफाई करने की परमिशन प्रोवाइड करता है. इसके बाद फंक्शन मेथड के आउटर रेफरेंस में कोई मॉडिफिकेशन करने परमिशन नहीं देता है।
- कस्टम जावा ऑब्जेक्ट के साथ काम करते समय यह बिहेवियर पास-बाय-रेफरेंस मेथड का यूज़ करता है. लेकिन रियल में, यह पोसेस अभी भी पास-बाय-वैल्यू ऑब्जेक्ट के रेफरेंस को ही फॉलो करता है।
