Java में मान द्वारा पास करना
Java में pass-by-value समझिए: primitives और references, दोबारा मान देना और mutation, ऐरे तथा immutability की सामान्य कठिनाइयाँ
Java में मान द्वारा पास करना, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 3 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
मान द्वारा पारित करने का अवलोकन
लक्ष्य: जानें कि Java पैरामीटर कैसे भेजता है। आदिम मानों और संदर्भों, पुनः असाइनमेंट और परिवर्तन, सरणियों तथा अपरिवर्तनीयता की तुलना करें।
आदिम मानों की प्रतिलिपि
आदिम मान मान द्वारा भेजे जाते हैं: कॉल की गई विधि को एक प्रतिलिपि मिलती है। पैरामीटर को फिर से असाइन करने से कॉल करने वाले का चर नहीं बदलता।
public class Main {
static void inc(int x) {
x = x + 1; // modifies the local copy only
}
public static void main(String[] args) {
int a = 5;
inc(a);
System.out.println("a after inc(a) = " + a); // still 5
}
}
संदर्भ: बदलना बनाम फिर से असाइन करना
ऑब्जेक्ट के लिए संदर्भ की प्रतिलिपि बनाई जाती है। उसके माध्यम से ऑब्जेक्ट बदलने पर कॉल करने वाले का ऑब्जेक्ट प्रभावित होता है; पैरामीटर को फिर से असाइन करने से ऐसा नहीं होता।
public class Main {
static class Box { int n; }
static void setTo999(Box b) { b.n = 999; } // mutate via copied reference
static void reassign(Box b) { b = new Box(); b.n = 123; } // reassign local copy only
public static void main(String[] args) {
Box bx = new Box();
bx.n = 10;
setTo999(bx);
System.out.println("after setTo999: bx.n = " + bx.n); // 999
reassign(bx);
System.out.println("after reassign: bx.n = " + bx.n); // still 999
}
}
सरणियाँ: बदलना बनाम फिर से असाइन करना
सरणियाँ ऑब्जेक्ट होती हैं। उन्हें बदलने पर कॉल करने वाला प्रभावित होता है; पैरामीटर को फिर से असाइन करने से कॉल करने वाले की सरणी नहीं बदलती।
public class Main {
static void fillZero(int[] a) {
for (int i = 0; i < a.length; i = i + 1) a[i] = 0; // mutate caller array
}
static void replace(int[] a) {
a = new int[] {9, 9, 9}; // reassign local copy of the reference
}
public static void main(String[] args) {
int[] arr = {1, 2, 3};
fillZero(arr);
System.out.println("after fillZero: " + arr[0] + "," + arr[1] + "," + arr[2]); // 0,0,0
replace(arr);
System.out.println("after replace: " + arr[0] + "," + arr[1] + "," + arr[2]); // still 0,0,0
}
}
अपरिवर्तनीय बनाम परिवर्तनशील
String अपरिवर्तनीय है (नए ऑब्जेक्ट लौटाता है); StringBuilder परिवर्तनशील है (उसी इंस्टेंस को बदलता है)।
public class Main {
static void tryChangeString(String s) {
s = s + "!"; // new String; original unchanged
}
static void changeBuilder(StringBuilder sb) {
sb.append("!"); // mutates same object
}
public static void main(String[] args) {
String s = "hi";
tryChangeString(s);
System.out.println("after tryChangeString: " + s); // "hi"
StringBuilder sb = new StringBuilder("hi");
changeBuilder(sb);
System.out.println("after changeBuilder: " + sb.toString()); // "hi!"
}
}
सही तरीके से अदला-बदली
क्योंकि पैरामीटर प्रतिलिपियाँ होते हैं, किसी विधि के भीतर आदिम मानों की अदला-बदली करने से कॉल करने वाला प्रभावित नहीं होता। नए मान लौटाएँ (या धारक ऑब्जेक्ट का उपयोग करें)।
public class Main {
static void trySwap(int a, int b) {
int t = a; a = b; b = t; // swaps local copies only
}
static int[] swap(int a, int b) {
return new int[] { b, a }; // return results to the caller
}
public static void main(String[] args) {
int x = 1, y = 2;
trySwap(x, y);
System.out.println("after trySwap: x=" + x + ", y=" + y); // 1,2
int[] res = swap(x, y);
x = res[0]; y = res[1];
System.out.println("after swap: x=" + x + ", y=" + y); // 2,1
}
}
मान द्वारा पारित करने की जाँच
त्वरित जाँच: Java के पैरामीटर भेजने के बारे में कौन-सा कथन सही है?
पुनरावलोकन और अगला चरण
पुनरावलोकन: आपने आदिम मानों और संदर्भों, परिवर्तन और पुनः असाइनमेंट, ऑब्जेक्ट के रूप में सरणियों, अपरिवर्तनीयता और सुरक्षित अदला-बदली के प्रतिरूप को देखा। अगला चरण: स्थैतिक बनाम इंस्टेंस विधियाँ।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Java में मान द्वारा पास करना” पाठ निःशुल्क है?
हाँ—“Java में मान द्वारा पास करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
“Java में मान द्वारा पास करना” में मैं क्या सीखूँगा?
Java में pass-by-value समझिए: primitives और references, दोबारा मान देना और mutation, ऐरे तथा immutability की सामान्य कठिनाइयाँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 1वाँ पाठ है।
“Java में मान द्वारा पास करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Java में मान द्वारा पास करना
- Static और Instance Methods
- Method Decomposition और स्वच्छ कोड