मैं स्पष्ट कर सकते हैं कि पूर्णांक (और फ्लोट की तरह अपने धर्म के अन्य, लघु आदि) सरल नमूना कोड से अडिग हैं:
नमूना कोड
public class Test{
public static void main(String... args){
Integer i = 100;
StringBuilder sb = new StringBuilder("Hi");
Test c = new Test();
c.doInteger(i);
c.doStringBuilder(sb);
System.out.println(sb.append(i)); //Expected result if Integer is mutable is Hi there 1000
}
private void doInteger(Integer i){
i=1000;
}
private void doStringBuilder(StringBuilder sb){
sb.append(" there");
}
}
वास्तविक परिणाम
परिणाम आता है वह हाय वहाँ 100 अपेक्षित परिणाम के बजाय (दोनों sb के मामले में और मैं परिवर्तनशील वस्तुओं जा रहा है) हाय वहाँ 1000
यह मुख्य में मैं द्वारा बनाई गई वस्तु से पता चलता संशोधित नहीं है , जबकि एसबी संशोधित है।
तो स्ट्रिंगबिल्डर ने उत्परिवर्तनीय व्यवहार का प्रदर्शन किया लेकिन इंटीजर नहीं।
तो इंटीजर अपरिवर्तनीय है।इसलिए साबित कर दिया
एक और केवल पूर्णांक के बिना कोड:
public class Test{
public static void main(String... args){
Integer i = 100;
Test c = new Test();
c.doInteger(i);
System.out.println(i); //Expected result is 1000 in case Integer is mutable
}
private void doInteger(Integer i){
i=1000;
}
}
स्रोत
2016-04-04 07:53:44
कक्षा अपरिवर्तनीय है, लेकिन ऑटोबॉक्सिंग फंकी चीजें होती जा रही है: http://stackoverflow.com/questions/3085332/comparison-between-variables-pointing-to-same-integer-object – birryree
धन्यवाद, मुक्केबाजी कीवर्ड था मुझे google की आवश्यकता है :) –
आप अंतिम या स्थिर मूल्य के साथ अपरिवर्तनीय भ्रमित हैं। –