"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > आइटम पैकेज्ड आदिम प्रकारों की तुलना में आदिम प्रकारों को प्राथमिकता दें

आइटम पैकेज्ड आदिम प्रकारों की तुलना में आदिम प्रकारों को प्राथमिकता दें

2024-11-11 को प्रकाशित
ब्राउज़ करें:305

Item  Dê preferência aos tipos primitivos em vez dos tipos primitivos empacotados

आदिम प्रकार बनाम। पैक्ड आदिम प्रकार

  • आदिम प्रकार: इंट, डबल, बूलियन, आदि।
  • पैक्ड आदिम प्रकार: पूर्णांक, डबल, बूलियन, आदि।
  • जावा में दोहरे प्रकार की प्रणाली है: आदिम प्रकार और संदर्भ प्रकार (ऑब्जेक्ट)।
  • प्रत्येक आदिम प्रकार का एक संगत आवरण वर्ग होता है।

मुख्य अंतर

  • पहचान बनाम। कीमत:
    आदिम: उनकी कोई पहचान नहीं है; समान मान वाले दो आदिम हमेशा समान होते हैं।
    पैकेज्ड: वे वस्तुएं हैं और उनकी एक पहचान है; दो वस्तुओं का मूल्य समान हो सकता है लेकिन पहचान अलग-अलग हो सकती है।

  • शून्य मान:
    आदिम: हमेशा एक डिफ़ॉल्ट मान होता है (उदाहरण के लिए int के लिए 0)।
    पैक्ड: शून्य हो सकता है, जिसे ठीक से प्रबंधित नहीं किए जाने पर NullPointerException अपवाद हो सकता है।

  • प्रदर्शन:
    आदिम: समय और स्थान के संदर्भ में अधिक कुशल।
    पैकेज्ड: अतिरिक्त वस्तुओं के निर्माण के कारण ओवरहेड का परिचय दें।

आदिम पदार्थों और पैकेजों को मिलाते समय सामान्य समस्याएं

  • 1. मूल्य तुलना के बजाय पहचान
  • == का उपयोग करके पैक की गई वस्तुओं की तुलना करते समय, आप ऑब्जेक्ट संदर्भों की तुलना कर रहे हैं, मानों की नहीं। इससे अप्रत्याशित परिणाम मिल सकते हैं।

समस्याग्रस्त उदाहरण:

Comparator naturalOrder = (i, j) -> (i 



समस्या: तुलना i == j संदर्भों की तुलना करता है, मानों की नहीं।
ग़लत व्यवहार: NaturalOrder.compare(new Integer(42), new Integer(42)) 0 के बजाय 1 लौटाता है।

समाधान:
Integer.
वर्ग की CompareTo विधि या उपयोगिता विधियों का उपयोग करें

Comparator naturalOrder = Integer::compare;

या, मूल तुलनित्र को सही करते हुए:

Comparator naturalOrder = (iBoxed, jBoxed) -> {
    int i = iBoxed;
    int j = jBoxed;
    return (i 



2. ऑटोअनबॉक्सिंग और NullPointerException
पैक किए गए प्रकारों का उपयोग करते समय जो शून्य हो सकते हैं, यदि ऑब्जेक्ट शून्य है तो ऑटोअनबॉक्सिंग अपवाद फेंक सकता है।

समस्याग्रस्त उदाहरण:

Integer i = null;
if (i == 42) {
    System.out.println("Inacreditável");
}

समस्या: मैं शून्य हूं; 42 के साथ तुलना करने पर, शून्य ऑटोअनबॉक्सिंग होती है, जिसके परिणामस्वरूप NullPointerException होता है।
समाधान: जब संभव हो तो आदिम प्रकारों का उपयोग करें।

int i = 0;
if (i == 42) {
    System.out.println("Inacreditável");
}

3. ऑटोबॉक्सिंग/अनबॉक्सिंग के कारण ख़राब प्रदर्शन
गहन संचालन में लपेटे गए प्रकारों का अनजाने उपयोग ऑटोबॉक्सिंग और अनावश्यक ऑब्जेक्ट निर्माण के कारण प्रदर्शन में गिरावट का कारण बन सकता है।

समस्याग्रस्त उदाहरण:

Long sum = 0L;
for (long i = 0; i 



समस्या: योग एक पैक्ड लॉन्ग है; प्रत्येक पुनरावृत्ति में, ऑटोबॉक्सिंग/अनबॉक्सिंग होती है।

प्रभाव: बहुत धीमा कोड और अत्यधिक मेमोरी उपयोग।
समाधान:
गहन संचालन में स्थानीय चर के लिए आदिम प्रकारों का उपयोग करें।

long sum = 0L;
for (long i = 0; i 



पैकेज्ड प्रकारों का उपयोग कब करें

  • संग्रह: आप सामान्य संग्रहों (जैसे सूची) में आदिम प्रकारों का उपयोग नहीं कर सकते।
  • जेनेरिक पैरामीटर्स: जेनेरिक प्रकार आदिम प्रकारों (जैसे थ्रेडलोकल) का समर्थन नहीं करते हैं।
  • एपीआई जिन्हें ऑब्जेक्ट की आवश्यकता होती है: कुछ एपीआई को आदिम प्रकारों के बजाय ऑब्जेक्ट की आवश्यकता होती है।

अच्छे आचरण

  • आदिम प्रकारों को प्राथमिकता दें: जब भी संभव हो, सरलता और दक्षता के लिए आदिम प्रकारों का उपयोग करें।
  • ऑटोबॉक्सिंग/अनबॉक्सिंग से सावधान रहें: ऑटोबॉक्सिंग से शब्दाडंबर कम हो जाता है लेकिन सूक्ष्म त्रुटियां हो सकती हैं।
  • रैप्ड में == के साथ तुलना करने से बचें: बराबर() जैसी विधियों का उपयोग करें या अनरैप्ड मानों की तुलना करें।
  • नल की जांच करें: पैकेज्ड प्रकारों के साथ काम करते समय, ध्यान रखें कि वे शून्य हो सकते हैं और NullPointerException का कारण बन सकते हैं।

सारांश
आदिम प्रकार:
सरल और तेज़.
वे शून्य नहीं हो सकते.
उनकी कोई पहचान नहीं है (केवल मूल्य)।

पैक्ड प्रकार:
संग्रह और सामान्य एपीआई में उपयोग के लिए आवश्यक।
वे शून्य हो सकते हैं।
उनके पास वस्तु पहचान है।

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/giselecoder/item-61-de-preferencia-aos-tipos-primitivos-em-vez-dostipos-primitivos-empacotados-34fk?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comडिलीट से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3