public static Integer valueOf(int i)
एक पूर्णांक उदाहरण निर्दिष्ट पूर्णांक मूल्य का प्रतिनिधित्व देता है। यदि एक नया इंटीजर इंस्टेंस की आवश्यकता नहीं है, तो इस विधि को को आमतौर पर के रूप में कन्स्ट्रक्टर इंटीजर (int) के वरीयता में उपयोग किया जाना चाहिए, यह विधि अक्सर अनुरोधित मानों को कैशिंग करके प्रदर्शन को बेहतर स्थान और समय प्रदान करने की संभावना है।
पैरामीटर:
i
- एक int मूल्य।
रिटर्न:
a
इंटीजर इंस्टेंस i
का प्रतिनिधित्व करता है।
के बाद से:
1,5
उल्लेख http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html#valueOf%28int%29
valueOf की इस प्रकार बाइट के लिए JDK 5 में जोड़ा गया है, लघु, पूर्णांक, और लांग (यह पहले से ही JDK 1.4 के बाद से बूलियन में तुच्छ मामले में ही अस्तित्व में)। ये सभी, निश्चित रूप से, जावा में अपरिवर्तनीय वस्तुएं हैं।ऐसा प्रतीत होता है कि यदि आपको किसी इंटीग्रेट ऑब्जेक्ट की आवश्यकता होती है, तो आप एक नया इंटीजर बनायेंगे। लेकिन जेडीके 5+, में आपको वास्तव में valueOf का उपयोग करना चाहिए क्योंकि इंटीजर अब -128 और 127 के बीच इंटीजर ऑब्जेक्ट्स को कैश करता है और आपको ब्रांड के समान समान इंटीजर पर ऑब्जेक्ट निर्माण को बर्बाद करने के बजाय हर बार एक ही सटीक इंटीजर (0) ऑब्जेक्ट को वापस ले सकता है वस्तु।
private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
उल्लेख Why YOU should use Integer.valueOf(int)
संपादित
autoboxing और ऑब्जेक्ट निर्माण:
महत्वपूर्ण बात हम पर विचार करना चाहिए कि autoboxing ऑब्जेक्ट निर्माण को कम नहीं करता है, लेकिन यह कोड को कम कर देता जटिलता। अंगूठे का एक अच्छा नियम उन प्राचीन प्रकारों का उपयोग करना है जहां वस्तुओं की आवश्यकता नहीं है, दो कारणों से:
आदिम प्रकार उनके संबंधित रैपर प्रकारों से धीमे नहीं होंगे, और बहुत तेज़ हो सकते हैं। कुछ अप्रत्याशित व्यवहार हो सकते हैं जिसमें == (संदर्भों की तुलना करें) और .equals() (मानों की तुलना करें) शामिल हैं।
आम तौर पर, जब प्राचीन प्रकारों को रैपर प्रकारों में बॉक्स किया जाता है, तो JVM स्मृति आवंटित करता है और एक नई वस्तु बनाता है। लेकिन कुछ विशेष मामलों के लिए, जेवीएम एक ही वस्तु का पुन: उपयोग करता है।
निम्नलिखित अपरिवर्तनीय वस्तुओं के रूप में जमा पुरातन की सूची है:
उल्लेख http://today.java.net/pub/a/today/2005/03/24/autoboxing.html#performance_issue
यह वास्तव में कोई फर्क नहीं पड़ता अगर आप 'MyMethod (Integer.valueOf (123))' या 'MyMethod (123)' autoboxing रूप में प्रयोग करेंगे Integer.valueOf() 'आप के लिए' करो। अपने लिए न्यायाधीश जो अधिक पठनीय है। (यह मानते हुए '' myMethod' लेता Integer') – soulcheck