Java में Integer और int में क्या अंतर है?


248

उदाहरण के लिए आप ऐसा क्यों कर सकते हैं:

int n = 9;

लेकिन नहीं:

Integer n = 9;

और आप कर सकते हैं:

Integer.parseInt("1");

लेकिन नहीं:

int.parseInt("1");

35
पूर्णांक वर्ग है, int एक आदिम प्रकार है
Anycorn

24
आप कर सकते हैं कर Integer n = 9;autoboxing की वजह से (जब तक आप जावा की एक बहुत ही पुराने संस्करण का उपयोग कर रहे हैं)
Alderath

जवाबों:


320

intएक आदिम प्रकार है। प्रकार के वेरिएबल्स intपूर्णांक के लिए वास्तविक द्विआधारी मूल्य को संग्रहीत करते हैं जो आप प्रतिनिधित्व करना चाहते हैं। int.parseInt("1")मतलब नहीं है क्योंकि intहै नहीं किसी भी विधि नहीं है एक वर्ग है और इसलिए।

Integerएक वर्ग है, जावा भाषा में किसी भी अन्य से अलग नहीं है। प्रकार के चर Integerदुकान संदर्भ के लिए Integerकिसी भी अन्य संदर्भ (वस्तु) प्रकार के साथ के रूप में वस्तुओं,। क्लास से Integer.parseInt("1")स्टेटिक मेथड के लिए एक कॉल है (ध्यान दें कि यह विधि वास्तव में ए और रिटर्न नहीं है )।parseIntIntegerintInteger

अधिक विशिष्ट होना, Integerएक एकल प्रकार के क्षेत्र के साथ एक वर्ग है int। इस वर्ग का उपयोग किया जाता है जहाँ आपको intकिसी अन्य वस्तु की तरह व्यवहार करने की आवश्यकता होती है, जैसे कि सामान्य प्रकार या परिस्थितियों में जहाँ आपको अशक्तता की आवश्यकता होती है।

ध्यान दें कि जावा में प्रत्येक आदिम प्रकार में एक समान आवरण वर्ग होता है:

  • byte है Byte
  • short है Short
  • int है Integer
  • long है Long
  • boolean है Boolean
  • char है Character
  • float है Float
  • double है Double

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

जावा 5 के बाद से हमारे पास ऑटोबॉक्सिंग है, और आदिम और आवरण वर्ग के बीच रूपांतरण स्वचालित रूप से किया जाता है। हालांकि, सावधान रहें, क्योंकि इससे सूक्ष्म कीड़े और प्रदर्शन समस्याएं हो सकती हैं; रूपांतरणों के बारे में स्पष्ट होने से कभी दुख नहीं होता।


6
में C#सभी डेटा प्रकार "अन्य नामों" है और int.Parse()(भले ही यह वास्तव में नहीं) कर भावना करता है
वाहिद अमीरी

22
@ VSG24 ... लेकिन यह एक जावा प्रश्न था, और यह एक जावा उत्तर है। C#यहाँ पूरी तरह से अप्रासंगिक है।
डार्कहॉग

3
अच्छा उदाहरण हो सकता है: संकलन त्रुटि: सूची <int> मान्य: सूची <पूर्णांक>
1828 पर hagai

अतिरिक्त ज्ञान से हमेशा लाभ होता है
sharma

1
मुझे नई चीजें सीखना पसंद है, खासकर जब ज्ञान वर्तमान विषय से संबंधित हो। धन्यवाद वाहिद
पॉल ओलिवर

30

इंटेगर एक वर्ग है और इंट एक आदिम प्रकार है।

इन लिंक पर पढ़ें:


1
मैं इंगित करना चाहता हूं, मुझे लगता है कि यह दो कारणों के लिए सही उत्तर है: 1- संक्षिप्त और सटीक, दर्शकों / पूछने वाले को ध्यान में रखते हुए 2- अतिरिक्त विवरण के लिए दिशा प्रदान करता है बजाय इसे उत्तर के पाठ में डालने के सभी नहीं। सवालों का सही और संक्षिप्त रूप से उत्तर दिया जा सकता है (कुछ को सटीक और पूर्ण होने के लिए बहुत अधिक विस्तार और बारीकियों की आवश्यकता होती है), लेकिन मुझे लगता है कि सभी उत्तरों को इस सरल और प्रत्यक्ष होने की कोशिश करनी चाहिए।
16

11
हे, मुझे लगता है कि यह वास्तव में विपरीत है। "int एक आदिम प्रकार है" आपको कुछ भी नहीं बताता है, यदि आप नहीं जानते कि एक आदिम प्रकार क्या है। (और यदि आप करते हैं, तो आप पहले से ही अंतर और इंटेगर के बीच अंतर को जानते हैं)। और पाठक को "लिंक 1" और "लिंक 2" लेबल वाले दो लिंक भेजना विशेष रूप से प्रासंगिक अनुभागों को उद्धृत करने की तुलना में बहुत ही अप्रसिद्ध है।
स्टीव बेनेट

7

एक इंटेगर, आदिम प्रकार के इंट के लिए सिर्फ एक आवरण है। यह आपको जीवन को थोड़ा आसान बनाने के लिए इंटेगर वर्ग के सभी कार्यों का उपयोग करने की अनुमति देता है।

यदि आप जावा में नए हैं, तो आपको सराहना करने के लिए कुछ सीखना चाहिए जो कि जावा प्रलेखन है। उदाहरण के लिए, आप जिस चीज के बारे में जानना चाहते हैं, वह पूर्णांक के बारे में है।

यह पूर्णांक वर्ग के लिए सीधे दस्तावेज से बाहर है:

इंटेगर क्लास एक ऑब्जेक्ट में आदिम प्रकार के इंट का मान लपेटता है। एक प्रकार की वस्तु इंटेगर में एक एकल क्षेत्र होता है जिसका प्रकार इंट होता है।


7
यह कुछ हद तक याद आती है। उदाहरण के लिए, जैसा Integerकि एक वर्ग है, इसे कंटेनरों में संग्रहीत किया जा सकता है (आदिम प्रकारों के विपरीत)।
ओलिवर चार्ल्सवर्थ

6

एक int वैरिएबल 32 बिट हस्ताक्षरित पूर्णांक मान रखता है। एक इंटेगर (पूंजी I के साथ) एक वस्तु (वर्ग) प्रकार की वस्तु के लिए एक संदर्भ रखता है इंटेगर, या अशक्त करने के लिए।

जावा स्वचालित रूप से दोनों के बीच डालता है; जब भी इंटेगर ऑब्जेक्ट इंट ऑपरेटर के लिए तर्क के रूप में होता है या इंटिजियर चर के लिए असाइन किया जाता है, तो इंटिजर से इंट को इंटर्ग्रेट किया जाता है। इस कास्टिंग को बॉक्सिंग / अनबॉक्सिंग कहा जाता है।

यदि एक पूर्णांक चर रेफ़रिंग नल स्पष्ट, स्पष्ट या अंतर्निहित है, तो NullPointerException को फेंक दिया जाता है।

(उपरोक्त पाठ में, शब्द "चर" का अर्थ है स्थानीय चर, क्षेत्र या पैरामीटर)


5

Integerजावा में आवरण प्रकार को संदर्भित करता है जबकि intएक आदिम प्रकार है। जावा में आदिम डेटा प्रकारों को छोड़कर सब कुछ ठीक उसी तरह लागू किया जाता है जैसा कि जावा से तात्पर्य है कि जावा एक उच्च योग्य शुद्ध वस्तु-उन्मुख प्रोग्रामिंग भाषा है। यदि आपको आवश्यकता है, तो सभी प्राइमेटिव प्रकार जावा में आवरण प्रकार के रूप में भी उपलब्ध हैं। आदिम प्रकार के साथ आपको कुछ प्रदर्शन लाभ हो सकते हैं, और इसलिए आवरण प्रकार का उपयोग केवल तभी किया जाना चाहिए जब यह आवश्यक हो।

नीचे के रूप में अपने उदाहरण में।

Integer n = 9;

निरंतर ऑटो-बॉक्सिंग किया9 जा रहा है ( और बाद में स्वचालित रूप से होता है ) और इसलिए आप इस तरह और भी बयान का उपयोग कर सकते हैं । यह वास्तव में बयान के माध्यम से हासिल किया गया हैauto-boxingunboxingjava 5IntegerInteger n = new Integer(9)Integer.valueOf(9).intValue();


3

int एक आदिम प्रकार है और एक वस्तु नहीं है। इसका मतलब है कि इसके साथ कोई विधि नहीं जुड़ी हैं। इंटीजर एक ऐसी विधि है जिसमें विधियों (जैसे कि parseInt) है।

नए जावा के साथ ऑटो बॉक्सिंग (और अनबॉक्सिंग) के लिए कार्यक्षमता है। इसका मतलब है कि कंपाइलर इंटेगर.वेल्यूऑफ (इंट) या पूर्णांक.इंटरवैल्यू () जहां जरूरत होगी, वहां डालेगा। इसका मतलब है कि यह वास्तव में लिखना संभव है

Integer n = 9;

जिसकी व्याख्या की जाती है

Integer n = Integer.valueOf(9);

3

इंटेगर एक रैपर वर्ग / वस्तु है और इंट आदिम प्रकार है। यह अंतर बहुत बड़ी भूमिका निभाता है जब आप एक संग्रह में अंतर मूल्यों को संग्रहीत करना चाहते हैं, क्योंकि वे केवल वस्तुओं को मूल्यों के रूप में स्वीकार करते हैं (जब तक कि jdk1.4)। JDK5 आगे की ओर ऑटोबॉक्सिंग की वजह से पूरी अलग कहानी है।


5
JDK5 + भी केवल वस्तुओं को स्वीकार करता है; यह सिर्फ इतना है कि ऑटोबॉक्सिंग कंपाइलर को स्वचालित रूप से Integer.valueOf(i)या आपके Integer.intValue()लिए कॉल करने देता है । Collection<int>अभी भी काम नहीं करेगा। तो यह पूरी तरह से अलग कहानी नहीं है - यह एक ही कहानी है, बस थोड़े समय के लिए।
यशवित

माना। क्षमा करें, हो सकता है कि मेरा शब्दांकन प्रतिबिंबित न हो।
कोसा

3

जावा में एक आदिम डेटा प्रकार है जबकि इंटेगर एक सहायक वर्ग है, इसका उपयोग एक डेटा प्रकार को दूसरे में बदलने के लिए किया जाता है।

उदाहरण के लिए:

         double doubleValue = 156.5d;
         Double doubleObject  = new Double(doubleValue);
         Byte myByteValue = doubleObject.byteValue ();
         String myStringValue = doubleObject.toString();

आदिम डेटा प्रकार सबसे तेजी से उपलब्ध मेमोरी को संग्रहीत करते हैं जहां हेल्पर वर्ग जटिल है और ढेर मेमोरी में स्टोर होता है।

"डेविड गैसनर" जावा आवश्यक प्रशिक्षण से संदर्भ।


2

intएक आदिम प्रकार है जो पूर्णांक का प्रतिनिधित्व करता है। जबकि Integerएक वस्तु है जो लपेटता है intIntegerवस्तु आप इस तरह के हेक्स, स्ट्रिंग, आदि को बदलने के रूप में और अधिक कार्यक्षमता, देता है

आप OOP अवधारणाओं का भी उपयोग कर सकते हैं Integer। उदाहरण के लिए, आप इंटेगर को जेनेरिक (यानी ) के लिए उपयोग कर सकते हैं ।Collection<Integer>


2

यह जावा: द कम्प्लीट रेफरेंस, नौवें संस्करण से लिया गया है

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

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

रैपर कक्षाएं जावा के ऑटोबॉक्सिंग सुविधा से सीधे संबंधित होती हैं । टाइप रैपर डबल, फ्लोट, लॉन्ग, इंटेगर, शॉर्ट, बाइट, कैरेक्टर और बुलियन हैं । ये कक्षाएं कई तरीकों की पेशकश करती हैं जो आपको जावा के ऑब्जेक्ट पदानुक्रम में आदिम प्रकारों को पूरी तरह से एकीकृत करने की अनुमति देती हैं।


1

जावा कोड रनटाइम का अनुकूलन करने के लिए, int आदिम प्रकार (ओं) को शामिल किया गया है float, boolआदि , लेकिन वे वहाँ रैपर कक्षाओं के साथ आते हैं ताकि यदि आपको आवश्यकता हो तो उन्हें मानक जावा ऑब्जेक्ट के रूप में परिवर्तित कर सकते हैं और उपयोग कर सकते हैं और साथ ही कई उपयोगिताएं जो उनके सदस्य के रूप में आती हैं। कार्य (जैसे Integer.parseInt("1"))।


1

intIntegerजावा में एक संदर्भ या आवरण प्रकार (वर्ग) है, जबकि एक आदिम डेटा प्रकार है।

के बाद java 1.5जो की अवधारणा को लागू autoboxing और unboxing आप प्रारंभ कर सकते हैं दोनों intया Integerइस तरह।

int a= 9
Integer a = 9 // both valid After Java 1.5.

क्यों Integer.parseInt("1");नहीं लेकिन int.parseInt("1");??

Integerjdkपुस्तकालय में परिभाषित एक वर्ग है और parseInt()एक स्थिर विधि Integerकक्षा से संबंधित है

तो, Integer.parseInt("1");जावा में संभव है। लेकिन intजावा में आदिम प्रकार (एक कीवर्ड की तरह मान लें) है। तो, आप के parseInt()साथ फोन नहीं कर सकते int

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.