2012-04-19 13 views
31

संभव डुप्लिकेट:
String and Finalक्या जावा में अंतिम स्ट्रिंग को परिभाषित करने के लिए यह समझ में आता है?

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html से मुझे लगता है कि पढ़ सकते हैं:

Strings are constant; their values cannot be changed after they are created. 

इसका मतलब यह है कि एक final String वास्तव में जावा में कोई मतलब नहीं है, में समझते हैं कि final विशेषता किसी भी तरह अनावश्यक है?

+0

* वेरिएबल * फाइनल घोषित करने के लिए आपके द्वारा असाइन किए गए ऑब्जेक्ट से कोई लेना देना नहीं है। –

+0

'ऑब्जेक्ट' स्वयं अपरिवर्तनीय है, लेकिन इसका संदर्भ उत्परिवर्तनीय हो सकता है। इसे 'अंतिम' बनाना संदर्भ को अपरिवर्तनीय बनाता है। –

+0

सभी उत्तरों और टिप्पणियों के लिए धन्यवाद। डुप्लिकेट करने के लिए खेद है। – Campa

उत्तर

46

String वस्तु अपरिवर्तनीय है लेकिन यह क्या है वास्तव में एक String वस्तु जो बदला जा सकता है के लिए एक संदर्भ है।

String someString = "Lala"; 

आप इस चर द्वारा आयोजित मूल्य पुन: असाइन (यह एक अलग स्ट्रिंग संदर्भ बनाने के लिए) कर सकते हैं::

उदाहरण के लिए

someString = "asdf"; 

हालांकि, इस के साथ:

final String someString = "Lala"; 

फिर उपरोक्त पुनर्मूल्यांकन संभव नहीं होगा और परिणामस्वरूप संकलन-समय त्रुटि होगी।

17

final ऑब्जेक्ट को नहीं, चर को संदर्भित करता है, इसलिए हाँ, यह समझ में आता है।

उदा

final String s = "s"; 
s = "a"; // illegal 
5

यह समझ में आता है। final कीवर्ड चर के लिए भविष्य के असाइनमेंट को रोकता है। निम्नलिखित जावा में एक त्रुटि होगी:

final String x = "foo"; 
x = "bar" // error on this assignment 
3

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

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

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