कभी-कभी मुझे एपीआई का उपयोग longया दिखाई देता हैLong या intया Integer, और मैं नहीं कर सकता आंकड़ा कैसे निर्णय है कि के लिए किया जाता है?
मुझे कब चुनना चाहिए?
कभी-कभी मुझे एपीआई का उपयोग longया दिखाई देता हैLong या intया Integer, और मैं नहीं कर सकता आंकड़ा कैसे निर्णय है कि के लिए किया जाता है?
मुझे कब चुनना चाहिए?
जवाबों:
Longहै Objectके रूप long, और Integerकी वस्तु रूप है int।
64 बिट का longउपयोग करता है । 32 बिट्स का उपयोग करता है, और इसलिए केवल -2 2 बिलियन (-2 31 से +2 31 -1) तक की संख्या पकड़ सकता है ।int
आपको उपयोग करना चाहिए longऔर int, सिवाय इसके कि आपको विरासत में मिली विधियों का उपयोग करने की आवश्यकता है Object, जैसे कि hashcode। Java.util.collectionsविधियाँ आमतौर पर बॉक्सिंग ( Object-वार्डेड) संस्करणों का उपयोग करती हैं , क्योंकि उन्हें किसी भी काम करने की आवश्यकता होती है Object, और एक आदिम प्रकार, जैसे intया long, एक नहीं है Object।
एक और अंतर यह है कि है longऔर intकर रहे हैं पास-दर-मूल्य , जबकि Longऔर Integerकर रहे हैं पास-दर-संदर्भ मूल्य , सभी गैर आदिम जावा प्रकार की तरह। इसलिए यदि यह संभव हो तो संशोधित किया जा सकता हैLong या Integer(यह नहीं है, तो वे जेएनआई कोड का उपयोग किए बिना अपरिवर्तनीय हैं), दूसरे पर एक का उपयोग करने का एक और कारण होगा।
एक अंतिम अंतर यह है कि एक Longया Integerहो सकता है null।
कुछ चीजें हैं जो आप एक आदिम प्रकार के साथ नहीं कर सकते हैं:
nullमूल्य हैObjects के साथ काम करता हैजब तक आपको उनमें से किसी की आवश्यकता नहीं होती है, तो आपको आदिम प्रकारों को प्राथमिकता देना चाहिए, क्योंकि उन्हें कम स्मृति की आवश्यकता होती है।
intसंख्याओं को रखते समय डिफ़ॉल्ट रूप से a का उपयोग करें ।intबहुत छोटी है, तो उपयोग करेंlonglongबहुत छोटी है, तो उपयोग करेंBigIntegerCollection, हैंडलिंग null, ...) उपयोग में लाना Integer/ Longइसके बजायएक int32-बिट पूर्णांक है; a long64-बिट पूर्णांक है। कौन सा उपयोग करना है यह इस बात पर निर्भर करता है कि आप कितनी बड़ी संख्या के साथ काम करने की उम्मीद करते हैं।
intऔर longआदिम प्रकार हैं, जबकि Integerऔर Longवस्तुएं हैं। आदिम प्रकार अधिक कुशल हैं, लेकिन कभी-कभी आपको वस्तुओं का उपयोग करने की आवश्यकता होती है; उदाहरण के लिए, जावा के संग्रह कक्षाएं केवल वस्तुओं के साथ काम कर सकते हैं, इसलिए यदि आप पूर्णांकों की एक सूची की जरूरत है आप इसे एक बनाने के लिए है List<Integer>, उदाहरण के लिए (यदि आप उपयोग नहीं कर सकते intएक में Listसीधे)।
Int32 bits (4byte)-2,147,483,648 to 2,147,483,647Long64 bits (8byte)-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
यदि आपकी चर का उपयोग 32 बिट श्रेणी में होता है, तो उपयोग करें Int, और उपयोग करें long। आमतौर पर लंबे समय का उपयोग वैज्ञानिक संगणना और सामान के लिए किया जाता है, जिसमें बहुत सटीकता की आवश्यकता होती है। (उदा। पाई का मान)।
एक के बाद एक को चुनने का एक उदाहरण YouTube का मामला है। उन्होंने पहली बार वीडियो व्यू काउंटर को परिभाषित
intकिया था , जो 2,147,483,647 से अधिक बार देखा गया था, जहां एक लोकप्रिय वीडियो प्राप्त हुआ था। चूंकि एकIntकाउंटर अपनी सीमा से अधिक किसी भी मूल्य को संग्रहीत नहीं कर सकता है, YouTube ने काउंटर को 64 बिट चर में बदल दिया है और अब 9,223,372,036,854,775,807 बार देखा जा सकता है। अपने डेटा को समझें और उस प्रकार का चयन करें जो 64 बिट चर के रूप में फिट बैठता है, 32 बिट चर की तुलना में मेमोरी को दोगुना लेगा।
जब यह एक बहुत लंबी संख्या का उपयोग करने की बात आती है जो प्रतिनिधित्व करने के लिए 32 बिट्स से अधिक हो सकती है, तो आप यह सुनिश्चित करने के लिए लंबे समय का उपयोग कर सकते हैं कि आपके पास अजीब व्यवहार नहीं होगा।
Java 5 से आप इन-बॉक्सिंग और आउट-बॉक्सिंग सुविधाओं का उपयोग कर सकते हैं ताकि इंट और इंटेगर का उपयोग पूरी तरह से समान हो सके। इसका मतलब है कि आप कर सकते हैं:
int myInt = new Integer(11);
Integer myInt2 = myInt;
अंदर और बाहर मुक्केबाजी (के लिए एक ही आप किसी भी अतिरिक्त रूपांतरण के बिना पूर्णांक और पूर्णांक बीच स्विच कर सकते Long, Double, Shortभी)
आप intहर समय उपयोग कर सकते हैं , लेकिन Integerकुछ सहायक विधियाँ हैं जो पूर्णांक के साथ कुछ जटिल कार्य करने में आपकी सहायता कर सकती हैं (जैसे Integer.parseInt(String))
ए) ऑब्जेक्ट क्लास "लॉन्ग" बनाम आदिम प्रकार "लॉन्ग"। (कम से कम जावा में)
बी) आदिम प्रकारों की अलग-अलग (यहां तक कि अस्पष्ट) मेमोरी-आकार हैं:
जावा - सभी स्पष्ट: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datitypes.html
C .. बस गड़बड़: https://en.wikipedia.org/wiki/C_data_types