1) स्ट्रिंग्स ऑब्जेक्ट्स हैं, जिनमें आमतौर पर char
सरणी और स्ट्रिंग की लंबाई होती है। चरित्र सरणी को आमतौर पर 16-बिट शब्दों की एक संगत सरणी के रूप में कार्यान्वित किया जाता है, प्रत्येक में मूल बाइट ऑर्डर में यूनिकोड वर्ण होता है।
2) एक पूर्णांक में एक वर्ण मान असाइन करना 16-बिट यूनिकोड वर्ण कोड को इसके पूर्णांक समकक्ष में परिवर्तित करता है। इस प्रकार 'c'
, जो यू +0063 है, 0x0063
, या 99 बन जाता है।
3) चूंकि प्रत्येक String
एक वस्तु है, इसमें इसके वर्ग के सदस्यों की तुलना में अन्य जानकारी शामिल है (उदाहरण के लिए, क्लास डिस्क्रिप्टर शब्द, लॉक/सेमफोर शब्द इत्यादि)।
ADENDUM
वस्तु सामग्री JVM कार्यान्वयन (जो निहित प्रत्येक वस्तु के साथ जुड़े भूमि के ऊपर निर्धारित करता है) पर निर्भर करती है, और कैसे वर्ग वास्तव में कोडित है (यानी, कुछ पुस्तकालयों दूसरों की तुलना में अधिक कुशल हो सकता है)।
उदाहरण
एक ठेठ कार्यान्वयन वस्तु दृष्टान्त प्रति दो शब्दों से एक ओवरहेड आवंटित करेगा (कक्षा वर्णनकर्ता/सूचक के लिए, और एक सेमाफोर/लॉक नियंत्रण शब्द); String
ऑब्जेक्ट में int
लंबाई और char[]
सरणी संदर्भ भी शामिल है। स्ट्रिंग की वास्तविक वर्ण सामग्री को दूसरी ऑब्जेक्ट में संग्रहीत किया जाता है, char[]
सरणी, जो बदले में दो शब्दों को आवंटित किया जाता है, साथ ही एक सरणी लंबाई शब्द, साथ ही स्ट्रिंग के लिए आवश्यक 16-बिट char
तत्वों के साथ-साथ कोई अतिरिक्त वर्ण स्ट्रिंग बनने के दौरान चारों ओर फांसी छोड़ दी गई थी)।
परिशिष्ट 2
मामले कि एक चार एक यूनिकोड वर्ण का प्रतिनिधित्व करता है अधिकांश मामलों में केवल सच है। यह 2005 से पहले UCS-2 एन्कोडिंग और सत्य का संकेत देगा। लेकिन अब तक यूनिकोड बड़ा हो गया है और स्ट्रिंग्स को यूटीएफ -16 का उपयोग करके एन्कोड किया जाना चाहिए - जहां एक एकल यूनिकोड चरित्र दोchar
एस जावा String
में उपयोग कर सकता है।
अपाचे के कार्यान्वयन के लिए वास्तविक स्रोत कोड पर एक नज़र डालें, उदा। पर:
http://www.docjar.com/html/api/java/lang/String.java.html
स्रोत
2010-12-15 18:09:29
आपको इन्हें व्यक्तिगत प्रश्नों में तोड़ने पर विचार करना चाहिए, क्योंकि वे वास्तव में बहुत अलग हैं। # 2 का शायद यहां उत्तर दिया जा सकता है: http://stackoverflow.com/questions/1490218/utf-16-to-ascii-conversion-in-java –