2010-09-07 57 views
6

जावा द्वारा संदर्भ द्वारा संदर्भ और कॉल द्वारा पारित अंतर के बीच क्या अंतर है?संदर्भ द्वारा पास और संदर्भ के अनुसार कॉल के बीच क्या अंतर है?

+2

"पास" और "कॉल" अलग अलग बातें, एक ही बात के विभिन्न नहीं संस्करण हैं। क्या आपका मतलब "संदर्भ से गुजरना" और "मूल्य से गुजरना" था? –

+2

@ जिम गैरीसन - जाहिर है "संदर्भ द्वारा कॉल करें" संदर्भ द्वारा पास करने के लिए एक पर्याय है, या तो [विकिपीडिया] (http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference) कहता है। –

+0

@ रिचर्ड - यदि आप इसे उत्तर देते हैं, तो मैं इसे ऊपर उठाऊंगा। – StriplingWarrior

उत्तर

9

जावा संदर्भ द्वारा किसी भी चर को पास नहीं करता है।

जावा में संदर्भ द्वारा पारित वस्तुओं के बारे में सोचने के लिए यह आकर्षक है - लेकिन हानिकारक। ऑब्जेक्ट प्रकार के चर संदर्भ हैं। पारित होने पर, वे मूल्य से पारित होते हैं।

अन्य भाषाओं में, पास-दर-संदर्भ और कॉल-बाय-रेफरेंस एक ही बात है।

संपादित करें: अधिक विस्तार मौजूदा stackoverflow सवाल "Is Java pass by reference?" (बिगाड़ने: नहीं) में प्रदान की जाती है

+0

संदर्भ द्वारा पारित वस्तुओं को नहीं हैं? –

+1

तकनीकी रूप से वे मूल्य से पारित होते हैं, लेकिन उनका मूल्य एक संदर्भ है। यदि आपने किसी ऑब्जेक्ट में 'ऑब्जेक्ट' foo' पास किया है, और फिर 'foo = new ऑब्जेक्ट()' कहा है, तो विधि में पारित कॉलिंग विधि का चर अपरिवर्तित रहेगा। – StriplingWarrior

+1

जावा में, सब कुछ मूल्य से गुजरता है। मूल्य से गुजरना मूल्य से गुजरना यह कहना सही है कि जावा संदर्भ मूल्य से पारित होते हैं। इसका अर्थ यह है कि यदि आपके पास किसी ऑब्जेक्ट का संदर्भ है, तो, और आप उस विधि कॉल के संदर्भ को पास करते हैं, तो संदर्भ बी में कॉपी हो जाता है। अब बी और एक ही वस्तु के लिए एक बिंदु। – hvgotcodes

7

महत्वपूर्ण अवधारणा - जावा "संदर्भ द्वारा पारित" की धारणा नहीं है। जावा में सबकुछ मूल्य से गुजरता है। जब आप किसी विधि कॉल में पैरामीटर के ऑब्जेक्ट संदर्भ को पास करते हैं, तो आप वास्तव में ऐसा कर रहे हैं जो आपके ऑब्जेक्ट के संदर्भ को इंगित करने वाला मान गुजर रहा है।

निम्न URL अधिक विस्तार में इस की व्याख्या: http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html और http://javadude.com/articles/passbyvalue.htm?repost

जाहिर की शर्तें (के रूप में अपने प्रश्न का टिप्पणी में उल्लेख किया) और "संदर्भ द्वारा कॉल" "संदर्भ द्वारा पारित" एक ही बात मतलब है।

1

आपने पूछा लेकिन, "संदर्भ द्वारा पास करें" और "संदर्भ द्वारा कॉल करें" एक ही बात है।

आप संदर्भ द्वारा पारित के बीच अंतर की तलाश में और

Pass by reference or pass by value?

के लिए मूल्य की जांच जवाब से गुजरती हैं लेकिन याद रहे हैं, तो जावा मूल्य द्वारा पैरामीटर गुजरता है।

http://javadude.com/articles/passbyvalue.htm

http://academic.regis.edu/dbahr/GeneralPages/IntroToProgramming/JavaPassByValue.htm

संबंधित मुद्दे