जावा के पास स्ट्रिंग के लिए आदिम प्रकार क्यों नहीं है जब अधिकांश अन्य डेटा प्रकार करते हैं?स्ट्रिंग के लिए कोई आदिम प्रकार क्यों नहीं है?
उत्तर
स्ट्रिंग एक वस्तु है, यह बिल्कुल एक प्राचीन प्रकार नहीं है, केवल वर्णों की एक सरणी है।
बिल वेनर्स: कारण है कि आदिम प्रकार सब पर जावा में मौजूद एक दिलचस्प एक है, a James Gosling interview से अंश है क्यों जावा में आदिम प्रकार के होते हैं? सब कुछ क्यों एक वस्तु नहीं थी?
जेम्स गोस्लिंग: पूरी तरह से एक दक्षता बात। सभी प्रकार के लोग हैं जिन्होंने सिस्टम बनाया है जहां इन्ट्स और सभी ऑब्जेक्ट्स हैं। ऐसा करने के लिए विविध तरीके हैं, और के सभी में उनके पास कुछ गंभीर गंभीर समस्याएं हैं। उनमें से कुछ धीमे हैं, क्योंकि वे सब कुछ के लिए स्मृति आवंटित करते हैं। उनमें से कुछ ऑब्जेक्ट्स करने का प्रयास करते हैं, जहां कभी-कभी वे ऑब्जेक्ट्स होते हैं, कभी-कभी वे नहीं होते हैं ( मानक LISP सिस्टम क्या होता है), और फिर चीजें वास्तव में अजीब होती हैं। यह काम करता है, लेकिन यह अजीब है।
बस इसे ऐसा बनाते हुए कि आदिम और वस्तुएं हैं, और वे बिल्कुल अलग हैं। आप पूरी तरह से समस्याओं का समाधान करते हैं।
तो संक्षेप में प्राचीन प्रकार दक्षता कारणों के लिए मौजूद हैं।
+1 - और अनुशासन यह है कि स्ट्रिंग आदिम नहीं है क्योंकि यह इसे आदिम बना देता है, यह इसे और अधिक कुशल नहीं बनायेगा। –
वास्तव में आदिम प्रकारों का एक बहुत अच्छा कारण है! यह सुनिश्चित करता है कि बर्बाद कीमती सेकंड (लगभग 10) को एक उदाहरण 'इंटीजर foo = new Integer (aValueFoo) बनाने के बजाय केवल int बनाने के लिए समय बचाता है; '। 'इंटीजर फू इंटीजर फू इंटीजर फू इंटीजर फू' देखने के लिए गन्दा हो जाएगा ... 'मेरी राय में अपना कोड अस्तर। पूर्णांक के साथ करने के लिए बड़ी चीजों की बात आती है जब इंटीजर का उपयोग होता है ... primitives एक आशीर्वाद है! –
अधिकांश प्रोग्रामिंग भाषाएं एक स्ट्रिंग आदिम पर विचार नहीं करती हैं क्योंकि यह वास्तव में वर्णों की एक सरणी है। आदिम प्रकार लगभग हमेशा एक निश्चित आकार है।
मुझे यह कहना चाहिए कि कुछ लोग स्ट्रिंग को "आदिम" मान सकते हैं क्योंकि यह अंतर्निहित है। लेकिन यह एक समग्र प्रकार के विपरीत मूल प्रकार होने के अर्थ में आदिम नहीं है। चूंकि एक स्ट्रिंग वर्णों की एक सरणी है, यह एक समग्र प्रकार है।
क्या कोई भाषा इसे आदिम मानती है? क्या स्मृति में निश्चित लंबाई एक होने का कारण बनती है? – Jeff
अजीब रूप से पर्याप्त, जावास्क्रिप्ट स्ट्रिंग में आदिम है। इसमें स्मृति की लंबाई तय हो सकती है क्योंकि यह अपरिवर्तनीय है। –
int, char, float, double, आदि सभी की स्मृति में निश्चित लंबाई है। जैसे एक int में 4 बाइट होते हैं, इस प्रकार 32 बिट्स।
लेकिन एक स्ट्रिंग में अलग-अलग लंबाई हो सकती है, यह वास्तव में चार की सरणी है।
ठीक है, यह कहने का एक कारण है कि यह ऑब्जेक्ट-प्रकार (यानी एक वर्ग) क्यों होना चाहिए, न कि मूल्य-प्रकार (यानी एक संरचना) - सवाल यह है कि यह आदिम क्यों नहीं है? जावा में सभी प्राइमेटिव्स वैल्यू टाइप हैं? - जावा में कोई structs नहीं हैं? – BrainSlugs83
केवल तार्किक उत्तर सीधे प्रश्न पर मिला: स्मृति आवंटन के मुद्दों के कारण। एक int या एक फ्लोट प्रकार के लिए एक विशिष्ट मेमोरी आकार की आवश्यकता होती है, लेकिन एक स्ट्रिंग (माफ करना, स्ट्रिंग) स्मृति की लंबाई (अनिश्चित समय पर) की एक चर लंबाई से बना है। अवधि। आपको बहुत - बहुत धन्यवाद! – user3285866
- 1. जावा संग्रह। कोई आदिम प्रकार क्यों नहीं?
- 2. एंड्रॉयड: आदिम प्रकार int
- 3. ओपनजीएल में कोई सर्कल या अंडाकार आदिम क्यों नहीं है?
- 4. कोई एकीकृत इंटीजर प्रकार क्यों नहीं है?
- 5. आदिम प्रकार
- 6. आदिम प्रकार int
- 7. जांचें कि कोई चर का प्रकार आदिम
- 8. आदिम प्रकार के लिए अस्थिर या सिंक्रनाइज़?
- 9. जावा: आदिम डेटा प्रकार के सरणी autobox नहीं है
- 10. क्यों कोई स्ट्रिंग नहीं है। स्प्लिट (स्ट्रिंग) अधिभार?
- 11. आदिम प्रकार और आईओसी कंटेनर
- 12. क्या आदिम प्रकार के मानों की तुलना करने के लिए कोई पुस्तकालय है?
- 13. रिकॉर्ड प्रकारों के लिए कोई प्रकार का कन्स्ट्रक्टर नहीं है?
- 14. क्यों सी ++ में कोई प्रकार नहीं (v)?
- 15. जावा डेटा प्रकार नामक जावा आदिम डेटा प्रकार क्यों नहीं हैं?
- 16. आदिम प्रकार enum - क्या यह मौजूद है
- 17. कोई आंशिक फ़ंक्शन प्रकार शाब्दिक क्यों नहीं है?
- 18. फ़ंक्शन.प्ली() या function.call() में पारित होने पर जावास्क्रिप्ट आदिम प्रकार क्यों बदलता है?
- 19. एक लिपटे आदिम डेटा प्रकार
- 20. आदिम डेटा प्रकारों के लिए शून्य
- 21. हास्केल में कोई अंतर्निहित सेट डेटा प्रकार क्यों नहीं है?
- 22. क्यों .NET में ईवेंट का कोई रिटर्न प्रकार नहीं है?
- 23. प्रदर्शन: आदिम प्रकार के लिए टाइपपीफ बनाम रैपर वर्ग?
- 24. मूल्य प्रकार के लिए डिफ़ॉल्ट कन्स्ट्रक्टर क्यों नहीं दिखता है?
- 25. स्ट्रिंग प्रकार में .ToString() विधि क्यों है?
- 26. सी ++ में एक आदिम प्रकार को शुरू करने के लिए = का उपयोग क्यों करें?
- 27. आदिम-बुलियन टू स्ट्रिंग कॉन्सटेनेशन/रूपांतरण
- 28. केवल आदिम प्रकार ('इस तरह के Int32, स्ट्रिंग, और Guid' के रूप में) इस संदर्भ
- 29. कोई std :: stou क्यों नहीं है?
- 30. आदिम-तर्क कन्स्ट्रक्टर के साथ एक प्रकार का पंजीकरण करें?
उह। काश आप सभी के साथ ईमानदार होने के लिए कोई प्राइमेटिव नहीं थे। – CookieOfFortune
असल में वही प्रश्न जो आपने यहां पूछा था: http://stackoverflow.com/questions/2099171/integer-as-primitve-type – David
क्या आपका वास्तव में मतलब था, प्राचीन प्रकार के बजाय स्ट्रिंग के लिए "मूल्य-प्रकार" ऑब्जेक्ट क्यों नहीं है ? (यानी आप ढेर बनाम ढेर पर एक स्ट्रिंग कैसे डालते हैं?) – BrainSlugs83