java - Assigning a Unicode character with a size of 4 bytes to a char -


मैं एक char को यूनिकोड वर्ण 0x10FFFF असाइन करने का प्रयास कर रहा था , लेकिन यह एक त्रुटि के साथ विफल:

  सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {char a = 0x10FFFF; int b = a; System.out.println ("b =" + b + ", लेकिन a =" + a); }   

त्रुटि:

  HelloWorld.java:4: त्रुटि: शुद्धता का संभावित नुकसान char = 0x10FFFF; ^ आवश्यक: चार पाया: int 1 त्रुटि   

अब मुझे पता है कि char के लिए ऊपरी सीमा 65,535 है क्योंकि यह भंडारण के लिए 16 बिट का उपयोग करता है।

क्या इसका अर्थ यह है कि एक char को यूनिकोड वर्णों का प्रतिनिधित्व करने के लिए कभी भी उपयोग नहीं किया जाना चाहिए? क्या हमें हमेशा यूनिकोड वर्णों के साथ एक int का उपयोग करना चाहिए?
क्या char प्रकार तब अच्छा है?

यह जावा में एक ज्ञात समस्या है, और समस्या को इस पते में बताया गया है:

जब के लिए विनिर्देश जावा भाषा बनाई गई थी, यूनिकोड मानक स्वीकार कर लिया गया था और चारों ओर से आदिम को 16-बिट डेटा प्रकार के रूप में परिभाषित किया गया था, जो 0x0000 से 0xFFFF की हेक्साडेसीमल सीमा में वर्णों के साथ था।

16-बीट एन्कोडिंग 216 (65,536) वर्णों का समर्थन करता है, जो पूरे विश्व में उपयोग में सभी वर्णों को परिभाषित करने के लिए अपर्याप्त है, यूनिकोड मानक 0x10FFFF तक बढ़ाया गया था, जो दस लाख वर्णों का समर्थन करता है। जावा प्रोग्रामिंग भाषा में एक वर्ण की परिभाषा को 16 बिट्स से 32 बिट तक नहीं बदला जा सकता, बिना लाखों जावा अनुप्रयोगों को ठीक से चलाए जाने के बिना। परिभाषा को सही करने के लिए, एक स्कीम को उन अक्षरों को संभाल करने के लिए विकसित किया गया था, जिन्हें 16 बिट्स में एन्कोड नहीं किया जा सकता।

16-बिट श्रेणी के बाहर के मूल्य वाले वर्ण, और 0x10000 से 0x10FFFF की सीमा के भीतर, पूरक वर्ण कहलाते हैं और इन्हें चार मानों की एक जोड़ी के रूप में परिभाषित किया जाता है।

कोड उदाहरणों और अधिक जानकारी के लिए ऊपर दिए गए लिंक का पालन करें।

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

Installing croogo for cakephp -

c# - Use custom conventions when persisting Rebus sagas in MongoDb -