2010-01-20 24 views
8

पूर्णांक के लिए आदिम प्रकार क्यों है (हालांकि) हमारे पास पूर्णांक के रूप में पूर्णांक के लिए एक वस्तु है? लेकिन स्ट्रिंग प्रकार के साथ ऐसा नहीं है। स्ट्रिंग के लिए ऐसा कोई आदिम प्रकार नहीं है। ऑब्जेक्ट संदर्भ के साथ हमेशा स्ट्रिंग सौदों?प्राचीन प्रकार के रूप में पूर्णांक

उत्तर

18

गति। मशीन कोड के लिए दो इंटीग्रेट ऑब्जेक्ट्स लेने के बजाय, दो इंटीग्रेट ऑब्जेक्ट्स का उपयोग करने के बजाय, दो इंट्स को मूल int निर्देशों का उपयोग करने के लिए बहुत तेज है, उनसे int मान निकालें, फिर परिणाम जोड़ें, परिणाम जोड़ने के लिए एक नया परिणाम इंटीजर ऑब्जेक्ट बनाएं। (how JNI maps primitives)

स्ट्रिंग्स जटिल हैं, कई विधियां हैं, और ऐसे में कोई मशीन कोड काउंटरपॉइंट नहीं है। उन्हें एक सच्चे वस्तु में पदोन्नत किया जाता है। साथ ही, एक स्ट्रिंग शेयर उसी स्ट्रिंग के साथ बनाए गए अन्य स्ट्रिंग्स के साथ राज्य करता है। इस तरह के अन्य आदिम मूल्यों के साथ कोई आदिम मूल्य शेयर राज्य नहीं है। (immutable can be shared | primitive no sharing)

+1

मैं अंतरिक्ष भी जोड़ूंगा। अपने सभी परिचालनों के साथ एक संपूर्ण वस्तु की तुलना में स्मृति के लिए एक पूर्णांक को स्टोर करने के लिए कम जगह। – Alex

0

एक स्ट्रिंग डेटाटाइप एक int की तुलना में काफी जटिल है - एक चीज के लिए एक स्ट्रिंग रखने के लिए स्मृति की एक परिवर्तनीय मात्रा है।

1

ऐसा इसलिए है क्योंकि प्रोसेसर (सीपीयू) के पास पूर्णांक प्रकारों के लिए प्रत्यक्ष समर्थन है लेकिन स्ट्रिंग के लिए नहीं। और प्रदर्शन कारणों से जावा कुछ देशी प्रकारों का समर्थन करता है जिन्हें प्रोसेसर द्वारा समर्थित किया जा सकता है, जो JVM चल सकता है।

0

आखिरकार मशीन स्तर की भाषा में गणना की जा रही है। मैं सोच रहा हूं कि प्रदर्शन के संदर्भ में प्राइमेटिव्स और ऑब्जेक्ट्स के बीच क्या अंतर होता है। विस्तृत उत्तर की सराहना की जाएगी।

+0

यह एक टिप्पणी होनी चाहिए - एक 'उत्तर' नहीं, कृपया यहां एसओ टूर प्रतिस्पर्धा करें: http://stackoverflow.com/tour –

संबंधित मुद्दे