मैं स्पष्ट कर सकता हूं कि सरल नमूना कोड द्वारा इंटेगर (और इसके अन्य पंथ जैसे फ्लोट, शॉर्ट आदि) अपरिवर्तनीय हैं:
नमूना कोड
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 आता है (दोनों एसबी और मैं परस्पर वस्तुओं के मामले में) हाय वहाँ 1000
यह दिखाता है कि मुख्य रूप से i द्वारा बनाई गई वस्तु को संशोधित नहीं किया गया है, जबकि sb को संशोधित किया गया है।
इसलिए स्ट्रिंगबर्ल ने परस्पर व्यवहार का प्रदर्शन किया लेकिन इंटेगर का नहीं।
तो इंटेगर इम्युटेबल है। इसलिए साबित हुआ
केवल इंटेगर के बिना एक और कोड:
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;
}
}