Codegym यूनिवर्सिटी कोर्स के भाग के रूप में एक परामर्शदाता के साथ एक व्याख्यान स्निपेट। पूर्ण पाठ्यक्रम के लिए साइन अप करें।


"अभिवादन, अमीगो। एक बार आपने सीखा कि कोड में वर्णों की एक स्ट्रिंग लिखने के लिए, आपको उन्हें दोहरे उद्धरण चिह्नों में लपेटने की आवश्यकता है।"

"हाँ, और यह हमें एक स्ट्रिंग शाब्दिक देता है । यह बहुत पहले नहीं था कि मुझे इस बारे में पता चला।"

"हमारे पेशे में, यह बहुत समय पहले था। लेकिन अभी वह बात नहीं है। इसके बजाय, कृपया मुझे बताएं कि अगर हमें एक स्ट्रिंग शाब्दिक के अंदर उद्धरण चिह्नों की आवश्यकता हो तो क्या करें?"

"हम्म... एक स्ट्रिंग जिसमें उद्धरण हैं — इससे आसान क्या हो सकता है। मुझे यकीन है कि कोई रास्ता है..."

"हाँ। मान लीजिए कि हम टेक्स्ट प्रदर्शित करना चाहते हैं "Friends" was nominated for an "Oscar"। हम इसे कैसे करेंगे?"

"ईमानदारी से कहूं तो मुझे कुछ पता नहीं है। मैं कुछ भी नहीं सोच सकता।"

"आप तर्क के माध्यम से एक समाधान प्राप्त करने में सक्षम नहीं होंगे। मैं आपको सिर्फ यह दिखाता हूं कि क्या करना है।

कोड टिप्पणियाँ
String s = ""Friends" was nominated for an "Oscar"";
यह विकल्प काम नहीं करेगा!"

"यह विकल्प काम नहीं करेगा, क्योंकि संकलक इसे पूरी तरह से अलग कोड के रूप में व्याख्या करता है:

कोड टिप्पणियाँ
String s = ""Friends" was nominated for an "Oscar"";
यह विकल्प काम नहीं करेगा!"

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

"तो आप शाब्दिक के अंदर दोहरे उद्धरण कैसे लिखते हैं?"

"एक तरीका है। इसे एस्केपिंग कैरेक्टर कहा जाता है। आप केवल टेक्स्ट की स्ट्रिंग के भीतर उद्धरण चिह्न लिखते हैं। और उद्धरण से पहले, आप \ ( बैकस्लैश ) प्रतीक जोड़ते हैं।

"यह ठीक से लिखे जाने पर स्ट्रिंग शाब्दिक जैसा दिखता है:

कोड टिप्पणियाँ
String s = "\"Friends\" was nominated for an \"Oscar\"";
यह काम करेगा!

"संकलक सब कुछ सही ढंग से व्याख्या करेगा और बैकस्लैश के बाद उद्धरण चिह्न को सामान्य उद्धरण चिह्न के रूप में नहीं मानेगा।

"क्या अधिक है, यदि आप इस स्ट्रिंग को स्क्रीन पर आउटपुट करते हैं, तो बैकस्लैश वाले उद्धरणों को सही ढंग से संसाधित किया जाएगा, और पाठ बिना किसी बैकस्लैश के प्रदर्शित किया जाएगा:"Friends" was nominated for an "Oscar"

"ठीक है, मैं यह नहीं कह रहा हूँ कि यह बहुत सुविधाजनक है ..."

"लेकिन आप क्या कर सकते हैं, ये नियम हैं। एक अन्य महत्वपूर्ण बिंदु। बैकस्लैश से पहले एक उद्धरण चिह्न एक एकल वर्ण का प्रतिनिधित्व करता है: हम केवल स्लिक नोटेशन का उपयोग कर रहे हैं जो हमारे में स्ट्रिंग अक्षर को पहचानने के लिए कंपाइलर की क्षमता में हस्तक्षेप नहीं करता है। कोड। आप एक charचर के लिए उद्धरण निर्दिष्ट कर सकते हैं:

कोड टिप्पणियाँ
char c = '\"';
\"एक वर्ण है, दो नहीं
char c = '"';
यह भी संभव है: सिंगल कोट्स के अंदर एक डबल कोटेशन मार्क

वर्णों से बचते समय होने वाली सामान्य स्थितियाँ

"डबल कोट्स के अलावा, कई अन्य वर्ण हैं जो संकलक एक विशेष तरीके से संभालते हैं। उदाहरण के लिए, एक लाइन ब्रेक।

"हम एक शाब्दिक में एक पंक्ति विराम कैसे जोड़ सकते हैं? इसके लिए एक विशेष संयोजन भी है:

\n
लाइन ब्रेक कैरेक्टर

"यदि आपको एक स्ट्रिंग शाब्दिक में एक पंक्ति विराम जोड़ने की आवश्यकता है, तो आप बस कुछ वर्ण जोड़ें" \n

उदाहरण:

कोड कंसोल आउटपुट
System.out.println("Best regards, \n Anonymous");
Best regards,
Anonymous

"इस तरह के कुल 8 विशेष संयोजन हैं, जिन्हें एस्केप सीक्वेंस भी कहा जाता है । ये रहे:

कोड विवरण
\t एक टैब वर्ण डालें
\b बैकस्पेस कैरेक्टर डालें
\n एक न्यूलाइन कैरेक्टर डालें
\r कैरिज रिटर्न कैरेक्टर डालें
\f एक पृष्ठ फ़ीड वर्ण डालें
\' एकल उद्धरण चिह्न डालें
\" दोहरा उद्धरण चिह्न डालें
\\ बैकस्लैश डालें

"आप पहले ही मुझे उनमें से दो दिखा चुके हैं। अन्य 6 का क्या मतलब है?"

"मैं अभी सब समझाता हूँ।

\tएक टैब वर्ण है

जब यह पाठ पाठ में प्रकट होता है, तो यह Tabटाइप करते समय कुंजी दबाने के बराबर होता है। यह उस पाठ को बदलता है जो उसके बाद आता है और पाठ को संरेखित करना संभव बनाता है।

उदाहरण:

कोड कंसोल आउटपुट
System.out.println("0\t1\t2\t3");
System.out.println("0\t10\t20\t30");
System.out.println("0\t100\t200\t300");
0       1        2        3
0       10       20       30
0       100      200      300

\bका अर्थ है 'एक वर्ण वापस जाओ'

एक स्ट्रिंग में यह क्रम Backspaceकीबोर्ड पर की को दबाने के बराबर है। यह उस चरित्र को हटा देता है जो इससे पहले होता है:

कोड कंसोल आउटपुट
System.out.println("Hello\b\b World");
Hel World

\rकैरिज रिटर्न कैरेक्टर है

यह वर्ण पाठ को बदले बिना कर्सर को वर्तमान पंक्ति की शुरुआत में ले जाता है (JDK संस्करण पर निर्भर करता है)। आगे जो कुछ भी प्रदर्शित होता है वह मौजूदा स्ट्रिंग को अधिलेखित कर देगा।

उदाहरण:

कोड कंसोल आउटपुट
System.out.println("Greetings\r World!");
World!ngs

\fएक पेज फीड कैरेक्टर है

यह प्रतीक पहले डॉट मैट्रिक्स प्रिंटर के दिनों से हमारे पास आता है। इस अनुक्रम को एक प्रिंटर पर आउटपुट करने से प्रिंटर बिना किसी टेक्स्ट को प्रिंट किए, बिना किसी नए पेज के शुरू होने तक, बस वर्तमान शीट को फीड कर देगा।

अब हम इसे पृष्ठ विराम या नया पृष्ठ कहेंगे ।

\\एक बैकस्लैश है

यहाँ सब कुछ सीधा है। यदि हम अपने पाठ में वर्णों से बचने के लिए बैकस्लैश का उपयोग करते हैं, तो हम स्ट्रिंग में स्वयं बैकस्लैश वर्ण कैसे लिखेंगे?

यह सरल है: पाठ में एक बैकस्लैश जोड़ें - आपको एक पंक्ति में दो लिखना होगा।

उदाहरण:

कोड कंसोल आउटपुट
System.out.println("c:\projects\my\first");
अज्ञात भागे हुए पात्रों के लिए संकलक आप पर चिल्लाएगा।
System.out.println("c:\\projects\\my\\first");
यह कैसे ठीक किया गया है!

"डबल स्लैश का उपयोग करना समझ में आता है। लेकिन मैं तुरंत बाकी सब कुछ याद नहीं कर पाया। मुझे आपके संकेतों पर भरोसा करना होगा।"

"धीरे-धीरे, आपको याद होगा कि आपको क्या चाहिए। चिंता न करें। और बाकी सब चीजों के लिए, गूगल है।

यूनिकोड एन्कोडिंग

"आप पहले से ही जानते हैं कि स्क्रीन पर प्रदर्शित प्रत्येक वर्ण एक विशिष्ट संख्यात्मक कोड से मेल खाता है। इन कोडों के एक मानकीकृत सेट को एन्कोडिंग कहा जाता है

"एक बार जब कंप्यूटर का आविष्कार किया गया था, तो सात बिट्स (एक बाइट से कम) प्रत्येक वर्ण को एन्कोड करने के लिए पर्याप्त थे। पहले एन्कोडिंग में केवल 128 वर्ण थे। इस एन्कोडिंग को ASCII कहा जाता था "

"यह एक अजीब नाम है।"

"इसके बारे में कुछ भी अजीब नहीं है। यह एक संक्षिप्त नाम है। ASCII का अर्थ अमेरिकन स्टैंडर्ड कोड फॉर इंफॉर्मेशन इंटरचेंज है - प्रिंट करने योग्य वर्णों और कुछ विशेष कोड के लिए एक मानक अमेरिकी कोड टेबल।"

"इसमें 33 गैर-मुद्रण योग्य नियंत्रण वर्ण होते हैं (जो प्रभावित करते हैं कि पाठ और रिक्त स्थान कैसे संसाधित होते हैं) और 95 मुद्रण योग्य वर्ण, जिनमें संख्याएँ, अपरकेस और लोअरकेस लैटिन अक्षर और कई विराम चिह्न शामिल हैं।

"जैसे-जैसे कंप्यूटर की लोकप्रियता बढ़ती गई, प्रत्येक देश ने अपनी स्वयं की एन्कोडिंग जारी करना शुरू कर दिया। आमतौर पर, उन्होंने ASCII को एक शुरुआती बिंदु के रूप में लिया और शायद ही कभी इस्तेमाल किए जाने वाले ASCII वर्णों को उनके संबंधित अक्षर से प्रतीकों के साथ बदल दिया।

"समय के साथ, एक विचार उभरा: एक एकल एन्कोडिंग बनाएं जिसमें दुनिया में हर एन्कोडिंग के सभी वर्ण शामिल हों।

यूनिकोड एन्कोडिंग

"इस प्रकार, 1993 में, यूनिकोड एन्कोडिंग बनाया गया था, और जावा भाषा पहली प्रोग्रामिंग भाषा बन गई, जिसने इस एन्कोडिंग को पाठ को संग्रहीत करने के लिए मानक के रूप में उपयोग किया। अब यूनिकोड पूरे आईटी उद्योग के लिए मानक है।

"यद्यपि यूनिकोड ही मानक है, इसके कई प्रतिनिधित्व या यूनिकोड परिवर्तन प्रारूप (UTF): UTF-8, UTF-16 और UTF-32, आदि हैं।

"जावा यूनिकोड एन्कोडिंग के एक उन्नत संस्करण का उपयोग करता है - UTF-16: प्रत्येक वर्ण 16 बिट्स (2 बाइट्स) में एन्कोड किया गया है। यह 65,536 वर्णों तक समायोजित कर सकता है! आप इस एन्कोडिंग में दुनिया के हर अक्षर के लगभग हर वर्ण को पा सकते हैं। "

"मुझे आशा है कि मुझे इसे दिल से जानने की आवश्यकता नहीं है?"

"यदि आप चाहते हैं, इसके लिए जाओ!"

"ठीक है, ठीक है। मैं इस नियम का उपयोग करूँगा: आप सब कुछ नहीं जान सकते, लेकिन आप सब कुछ Google कर सकते हैं।"

\u"एक तर्कसंगत दृष्टिकोण अपनाना सब कुछ है। इसलिए, अपने कोड का उपयोग करके अपने प्रोग्राम में एक यूनिकोड वर्ण लिखने के लिए, आपको हेक्साडेसिमल में + कोड लिखना होगा। उदाहरण के लिए,\u00A9

कोड कंसोल आउटपुट
System.out.println("\u00A9 CodeGym");
© CodeGym

यूनिकोड: कोड प्वाइंट

"640 किलोबाइट सभी के लिए पर्याप्त होना चाहिए! या नहीं"। बिल गेट्स ने एक बार कहा था। या नहीं। कम से कम इस उद्धरण का श्रेय उन्हीं को दिया जाता है।"

"हाहा। 640 किलोबाइट एक सफाई रोबोट के मस्तिष्क को लोड करने के लिए भी पर्याप्त नहीं है।"

"जीवन कठिन है, और समय के साथ, UTF-16 एन्कोडिंग अपर्याप्त होने लगी। यह पता चला है कि बहुत सारी एशियाई भाषाएँ हैं, और उनके पास बहुत सारे ग्लिफ़ हैं। और ये सभी ग्लिफ़ केवल 2 बाइट्स में नहीं भरे जा सकते "

"तो हम क्या करें?"

" अधिक बाइट्स का उपयोग करें! लेकिन चार प्रकार केवल 2 बाइट्स हैं और इसे 4 में बदलना इतना आसान नहीं है: जावा कोड की अरबों पंक्तियाँ पूरी दुनिया में लिखी गई हैं, जो कि चार प्रकार के अचानक 4 बाइट्स जावा बन जाने पर टूट जाएगी मशीन। इसलिए हम चार प्रकार नहीं बदल सकते हैं!

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

"कुछ अक्षर जो नेत्रहीन रूप से एक वर्ण के रूप में दिखाई देते हैं, उन्हें charएक स्ट्रिंग में दो एस के रूप में एन्कोड किया गया है:

कोड कंसोल आउटपुट
System.out.println("\uD83D\uDD0A");
🔊

"अब आपका Java प्रोग्राम कंसोल में इमोजी भी आउटपुट कर सकता है 😎"

"मैं निश्चित रूप से इसका उपयोग कुछ मज़ा लेने के लिए करूँगा!"