2010-01-24 12 views
5

मैंने कहीं पढ़ा है कि जावा केस-संवेदी है। मैं इसकी पुष्टि करने में असमर्थ हूं। क्या यह? यदि हां, तो क्यों?जावा केस-संवेदी है?

उत्तर

11

हां, यह मामला संवेदनशील है। सी से इसकी विरासत के कारण यह इस तरह से है कि लोगों को "दिन में" लोगों के लिए उपयोग करने के लिए और अधिक परिचित रखने के लिए, उन्होंने इसे केस-संवेदी के रूप में छोड़ दिया। एक अतिरिक्त फायदा है, क्योंकि जावा पहचानकर्ता लगभग Unicode चरित्र हो सकते हैं। आपको चिंता करने की ज़रूरत नहीं है कि एक व्यक्तिगत चरित्र को ऊपरी या नहीं किया जा सकता है या नहीं।

उदाहरण के लिए, ßss के बराबर होना चाहिए?

+0

वह यूनिकोड चरित्र क्या है? –

+0

@ कोले "कोल 9" जॉनसन ß लैटिन लघु पत्र SHARP एस यूनिकोड: यू +00 डीएफ, यूटीएफ -8: सी 3 9 एफ –

+0

एक एस, आह? फिर 'लोअरकेस (यू +00 डीएफ)' का परिणाम 'ss' में क्यों होता है? मुझे यकीन है कि यह सिर्फ 's' होगा। –

6

पहचानकर्ता केस-संवेदी हैं क्योंकि संयोजन एक कठिन, लोकेल-निर्भर समस्या है।

+1

यूनिकोड संयोजन एक प्रीऑर्डर परिभाषित करता है, जिसका अर्थ है कि यह * भी * केस-असंवेदनशील तुलना को परिभाषित करता है। – Tobu

+1

मैं सही खड़ा हूँ; माफ़ कीजिये। मैं वोट अब और नहीं बदल सकता, हालांकि जोएल और जेफ ने फैसला किया कि यह एक अच्छा विचार होगा कि विचार-विमर्श किसी की राय पर कभी नहीं चलेगा। – Joey

+0

धन्यवाद, और मैं सकारात्मक सुदृढीकरण चीज़ को अनदेखा कर दूंगा। – Tobu

3

हां। जावा केस-संवेदी है क्योंकि अधिकांश प्रोग्रामिंग भाषाएं हैं!

+2

मैं कहूंगा कि यह एक बहुत खराब स्पष्टीकरण है। – MightyPork

6

जावा केस-संवेदी है क्योंकि यह सी-शैली वाक्यविन्यास का उपयोग करता है। केस संवेदनशीलता उपयोगी है क्योंकि यह आपको अनुमान लगाती है कि इसका नाम किस मामले के आधार पर है।

उदाहरण के लिए, कक्षा के नाम के लिए जावा मानक प्रत्येक शब्द (Integer, PrintStream, आदि) के पहले अक्षर को अपरकेसिंग कर रहा है। परिवर्तनीय और विधि नामों के लिए मानक पहले शब्द के पहले अक्षर को कम करता है, और अन्य सभी पहले अक्षर (number, println(), checkError(), आदि) को अपरकेसिंग करता है। और स्थिरांक के लिए मानक अंडरस्कोर के साथ सभी अपरकेस है (SOME_CONSTANT)।

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

4

यह एक तकनीकी निर्णय था। जावा प्लेटफार्म स्वतंत्र होने का इरादा रखता है। सार्वजनिक जावा कक्षाओं को फाइल सिस्टम में पैकेज/क्लासनाम के साथ संग्रहीत किया जाता है। गैर-विंडोज प्लेटफ़ॉर्म में फ़ाइल नाम केस संवेदनशील होते हैं। यदि आप वर्ग को लोड/चलाने के लिए सटीक मामले का उपयोग नहीं करते हैं तो यह वहां विफल हो जाएगा। जावा में अन्य पहचानकर्ताओं को केस संवेदनशीलता के लिए यह आवश्यकता है (जो अंत में नामकरण सम्मेलनों जैसे अन्य (लेकिन गैर तकनीकी) फायदे के लिए कमरे पैदा करता है)।

1

जावा कंपाइलर और दुभाषिया केस-संवेदी हैं, इसलिए आपको लगातार पूंजीकरण करना होगा।

HelloWorldApp Helloworldapp जैसा नहीं है।

यह मामला संवेदनशीलता जावा की विरासत को सी और सी ++ की वृद्धि के रूप में दर्शाती है।

33

मैंने कहीं पढ़ा है कि जावा केस-संवेदी है। मैं इसकी पुष्टि करने में असमर्थ हूं।

जावा स्रोत कोड केस संवेदनशील है, यदि आपका मतलब है। यानी Doubledouble जैसा ही नहीं है, और आपके पास दो अलग और अलग चर myData और mydata हो सकते हैं।

क्या यह है? यदि हां, तो क्यों?

केस प्रोग्रामिंग अधिकांश प्रोग्रामिंग भाषाओं और वातावरण में मानक है, क्योंकि निचले और ऊपरी केस अक्षरों को निम्नतम स्तरों पर अलग-अलग दर्शाया जाता है। एक कंप्यूटर के लिए, "ए" और "ए" दो पूरी तरह से अलग चीजें हैं, और यह कार्य करने के लिए अतिरिक्त काम करता है जैसे कि वे समान थे।

इसके अलावा, कुछ भाषाओं में आवरण के लिए बहुत ही मुश्किल विशेष नियम हैं, उदा। जर्मन अक्षर ß में कोई अपरकेस संस्करण नहीं है और आमतौर पर "एसएस" के लिए अपरिवर्तित होता है - तो "वीआईएसएएस" और "WEISS" को सिंटेक्टिक रूप से समान माना जाना चाहिए? तुर्की भी बदतर है: उनके पास दो अलग-अलग अक्षरों के साथ और बिना डॉट के हैं, और प्रत्येक का अपना अपरकेस संस्करण है। तो तुर्की में, "छवि" "छवि" का अपरकेस संस्करण नहीं है! और यह विशेष रूप से जावा के लिए अप्रासंगिक नहीं है, क्योंकि आप वास्तव में इन सभी अक्षरों को अपने जावा प्रोग्राम में पहचानकर्ता के रूप में उपयोग कर सकते हैं यदि आप चाहें।

इन सबके प्रकाश में, यह बहुत समझ में आता है कि प्रोग्रामिंग भाषा डिजाइनर सिंटैक्स केस संवेदनशील होने का सरल समाधान चुनेंगे।

+0

मुझे लगता है कि आपके द्वारा उल्लिखित समस्या के बिना केस असंवेदनशील भाषा आसानी से मौजूद हो सकती है। यदि आप प्रोग्राम में पहचानकर्ता/चर/स्थिरांक/आदि को केवल ASCII वर्णों से बनाते हैं, तो समस्या अब और मौजूद नहीं होगी। इसके अलावा, भले ही आप एक फ्रेंच प्रोग्रामर हों, आप अंग्रेजी में कोड करेंगे। आपके कोड को जितना संभव हो उतने लोगों द्वारा समझा जाना चाहिए। हां, अन्य विशेष वर्ण आपके कोड के भीतर चरित्र-तारों में मौजूद (और करेंगे) मौजूद हैं, लेकिन यह एक बिल्कुल अलग मुद्दा है। मैं यह नहीं कह रहा हूं कि केस-असंवेदनशीलता के लिए स्विच किया जाना चाहिए, मैं बस इतना कह रहा हूं कि यह आसान होगा। –

+0

दरअसल, एचटीएमएल, सीएसएस और एसक्यूएल (और इस प्रकार पीएल/एसक्यूएल) केस-असंवेदनशील भाषाओं के उदाहरणों के रूप में दिमाग में आते हैं जो 'ß' (हालांकि यह एक दिलचस्प बिंदु है) के कारण इंपोड नहीं होता है। –

3

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

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