scope - Changing the values of variables in methods, Java -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 71 उत्तर

मुझे बदलने के बारे में एक सवाल है जावा में विधियों में वेरिएबल के मूल्य।

यह मेरा कोड है:

  सार्वजनिक वर्ग का परीक्षण {सार्वजनिक स्थिर शून्य कष्ट (int a, int [] b) {b [0] = बी [0] * 2; ए = बी [0] + 5; } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) {int bird = 10; Int [] शेर = {7}; टेस्ट। फंक (पक्षी, बाघ); }}  

विधि निष्पादन के बाद test.funk (पक्षी, बाघ) , पक्षी का मूल्य बदला नहीं है - यह मान के साथ रहता है 10 , भले ही फंक () विधि में हमने a = b [0] + 5;

दूसरी तरफ, सरणी में तत्व का मान बदलता है, क्योंकि हमारे पास बयान b [0] = b [0] * 2;

टी क्यों एक बात बदल और अन्य नहीं समझते हैं? क्या कोई मेरे लिए यह समझा सकता है।

जॉन स्कीट के बारे में लेख देखें, जो बताते हैं कि यह

संक्षेप में (अपनी साइट को अधिक विवरण के लिए देखें):

एरे संदर्भ प्रकार हैं यदि आप किसी संदर्भ को पास करते हैं जो एक सरणी को इंगित करता है, तो संदर्भ का मान कॉपी और फ़ंक्शन के पैरामीटर को असाइन किया जाता है। तो पैरामीटर उसी सरणी को इंगित करेगा जैसे पारित किया गया तर्क। इस प्रकार आप अपने फ़ंक्शन के पैरामीटर के माध्यम से सरणी में जो परिवर्तन करते हैं, वह कॉलिंग फ़ंक्शन में दिखाई देगा। पैरामीटर ही (बी) को बदलना, उदाहरण के लिए इसे नल पर सेट करके, कॉलिंग फ़ंक्शन द्वारा ध्यान नहीं दिया जाएगा, क्योंकि पैरामीटर (बी) केवल तर्क (बाघ) की एक प्रति है पारित।

इंटीजर्स आदिम प्रकार तथाकथित हैं पूर्णांक को पास करने से इसके मूल्य की प्रतिलिपि होती है और यह पैरामीटर को भी निर्दिष्ट करती है। लेकिन यह मान वास्तविक डेटा का कोई संदर्भ नहीं है, लेकिन यह डेटा ही है इसलिए फ़ंक्शन में पैरामीटर में परिवर्तन पैरामीटर (ए) को प्रभावित करेगा, लेकिन कॉलिंग फ़ंक्शन (पक्षी) में पारित तर्क नहीं।


Comments