2013-08-24 7 views
9

जैसा कि मेरा शीर्षक बताता है, यह एक सैद्धांतिक प्रश्न है। मैं जानना चाहता हूं कि अगर जावा स्ट्रिंग को शून्य समाप्त कर देता है।क्या जावा स्ट्रिंग को निरस्त कर दिया गया है?

+0

@ रीमेस, तो वे स्ट्रिंग समाप्त करने को कैसे ट्रैक करते हैं? लंबाई का उपयोग करना? – Dewsworld

+0

उस प्रश्न को नहीं देखा हालांकि पहले Google की खोज की गई थी। एक डुप्लिकेट हो सकता है! – Dewsworld

+0

ड्यूजवर्ल्ड, यह एक सैद्धांतिक प्रश्न बताते हुए बंद करने के लिए लगभग एक मृत-प्रमाणित कारण है। एसओ आपको वास्तविक समस्याओं के लिए माना जाता है। – paxdiablo

उत्तर

5

जावा तारों को सी या सी ++ में शून्य वर्णों के साथ समाप्त नहीं किया जाता है। यद्यपि जावा स्ट्रिंग आंतरिक रूप से चार सरणी का उपयोग करती है लेकिन इसमें कोई कमी नहीं होती है। स्ट्रिंग क्लास स्ट्रिंग में वर्णों की संख्या जानने के लिए लंबाई नामक एक विधि प्रदान करता है।

public static void main(String[] args) { 
    String s = "Juned"; 
    System.out.println(s); 
} 

डीबगर स्क्रीनशॉट:

enter image description here

+1

क्या आपके पास अपने उत्तर का समर्थन करने का कोई तर्क है? –

+0

@ जुनेड अहसान, क्या आप कृपया थोड़ा सा समझा सकते हैं :) – Dewsworld

+0

जावा विनिर्देश इसका उल्लेख नहीं करता है, लेकिन यदि आप अपना कोड डीबग मोड में चलाते हैं, तो आप अलमारी को स्ट्रिंग आंतरिक सरणी की सामग्री देख सकते हैं, और कोई स्थायी शून्य वर्ण नहीं होगा । –

1

इससे कोई फर्क पड़ता है

यहाँ सरल कोड और उसके डिबगर सामग्री है?

यदि आप किसी जावा स्ट्रिंग को किसी प्रकार के क्रमबद्ध प्रारूप (डिस्क, नेटवर्क इत्यादि) में कनवर्ट करते हैं, तो यह सब मायने रखता है क्रमशः प्रारूप है, जेवीएम का आंतरिक प्रारूप नहीं।

यदि आप जेएनआई के माध्यम से सी कोड में स्ट्रिंग का डेटा पढ़ रहे हैं, तो आप सीधे डेटा को कभी नहीं पढ़ते हैं, आप हमेशा GetStringChars() या GetStringUTFChars() जैसे जेएनआई फ़ंक्शंस का उपयोग करते हैं। GetStringChars() को नल-टर्मिनेटेड डेटा लौटने के रूप में प्रलेखित नहीं किया गया है, इसलिए आपको यह नहीं मानना ​​चाहिए कि यह शून्य-समाप्त हो गया है- आपको इसकी लंबाई निर्धारित करने के लिए GetStringLength() का उपयोग करना होगा। इसी प्रकार GetStringUTFChars() के साथ, modified UTF-8 format में इसकी लंबाई निर्धारित करने के लिए आपको GetStringUTF8Length() का उपयोग करना होगा।

+3

"क्या इससे कोई फर्क पड़ता है?" उम्म ... यह जानना अच्छा लगता है कि कंप्यूटर कैसे काम करते हैं। – citelao

+1

इससे कोई फर्क नहीं पड़ता कि क्या आप इस बारे में चिंतित हैं कि क्या होता है यदि आप 'NUL' वर्ण को 'स्ट्रिंग' में डालते हैं। हालांकि, अगर आप ऐसा कर रहे हैं, तो यह तर्कसंगत है कि आप 'स्ट्रिंग' का गलत इस्तेमाल कर रहे हैं ... क्योंकि * वास्तविक * पाठ में 'एनयूएल' वर्ण नहीं दिखना चाहिए। (लेकिन मैं स्वीकार करता हूं कि ऐसे उपयोग-मामले हैं जहां आप 'NUL' को 'स्ट्रिंग' में वैसे भी अनुमति देना चाहते हैं।) –

7

मैं जानना चाहता हूं कि यदि जावा स्ट्रिंग को शून्य समाप्त कर देता है।

सं। ए स्ट्रिंग को char मानों का एक निश्चित लंबाई अनुक्रम माना जाता है। सभी संभव char मान (0 से 65535 तक) स्ट्रिंग में उपयोग किए जा सकते हैं। कोई "प्रतिष्ठित" मान नहीं है जिसका अर्थ है कि स्ट्रिंग समाप्त होती है।

तो वे स्ट्रिंग समाप्त करने को कैसे ट्रैक करते हैं? लंबाई का उपयोग करना?

हां। String ऑब्जेक्ट में निजी length फ़ील्ड है (सभी कार्यान्वयन में मैंने जांच की है ...)।

यदि आप जावा स्ट्रिंग्स को कार्यान्वित करने के तरीके के बारे में और अधिक समझना चाहते हैं, तो विभिन्न संस्करणों के लिए स्रोत कोड ऑनलाइन उपलब्ध है। "Java.lang.String स्रोत" के लिए Google।

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

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