1. पात्र सुटण्याची कारणे

एकेकाळी, तुम्ही शिकलात की कोडमध्ये अक्षरांची स्ट्रिंग लिहिण्यासाठी, तुम्हाला त्यांना दुहेरी अवतरणांमध्ये गुंडाळण्याची आवश्यकता आहे. परिणाम एक स्ट्रिंग शब्दशः आहे .

पण जर आपल्याला स्ट्रिंग लिटरलमध्ये अवतरण चिन्ह हवे असतील तर आपण काय करावे? कोट्स असलेली स्ट्रिंग — काय सोपे असू शकते?

समजा आम्हाला मजकूर प्रदर्शित करायचा आहे "Friends" was nominated for an "Oscar". तुम्ही ते कसे करता?

कोड नोट्स
String s = ""Friends" was nominated for an "Oscar"";
हा पर्याय चालणार नाही!

समस्या अशी आहे की कंपाइलरला वाटते की तुम्ही पूर्णपणे अनपेक्षित कोड लिहित आहात:

कोड नोट्स
String s = ""Friends" was nominated for an "Oscar"";
हा पर्याय चालणार नाही!

कंपायलरला कोडमध्ये दुहेरी अवतरण आढळल्यानंतर, ते स्ट्रिंग लिटरलची सुरुवात म्हणून पुढील गोष्टी हाताळते. पुढील दुहेरी अवतरण चिन्ह अक्षरशः स्ट्रिंगचा शेवट दर्शवते.

तर तुम्ही अक्षराच्या आत दुहेरी अवतरण कसे लिहाल?


2. एस्केपिंग वर्ण

एक मार्ग आहे. त्याला एस्केपिंग कॅरेक्टर्स म्हणतात . तुम्ही फक्त मजकूराच्या स्ट्रिंगमध्ये अवतरण चिन्ह लिहा. आणि कोट्सच्या आधी, तुम्ही \( बॅकस्लॅश ) चिन्ह जोडता.

योग्य रीतीने लिहिल्यास स्ट्रिंग अक्षरशः असे दिसते:

कोड नोट्स
String s = "\"Friends\" was nominated for an \"Oscar\"";
हे चालेल!

कंपाइलर प्रत्येक गोष्टीचा अचूक अर्थ लावेल आणि बॅकस्लॅश नंतरच्या अवतरण चिन्हाला सामान्य अवतरण चिन्ह मानणार नाही.

इतकेच काय, जर तुम्ही ही स्ट्रिंग स्क्रीनवर आउटपुट केली, तर बॅकस्लॅशसह कोट्सवर योग्य प्रकारे प्रक्रिया केली जाईल आणि मजकूर कोणत्याही बॅकस्लॅशशिवाय प्रदर्शित केला जाईल:"Friends" was nominated for an "Oscar"

आणखी एक महत्त्वाचा मुद्दा. बॅकस्लॅशच्या आधी आलेला अवतरण चिन्ह एका वर्णाचे प्रतिनिधित्व करतो: आम्ही फक्त स्लिक नोटेशन वापरत आहोत जे आमच्या कोडमधील स्ट्रिंग लिटरल्स ओळखण्याच्या कंपाइलरच्या क्षमतेमध्ये व्यत्यय आणत नाही. तुम्ही व्हेरिएबलला कोट्स नियुक्त करू शकता char:

कोड नोट्स
char c = '\"';
\"एक वर्ण आहे, दोन नाही
char c = '"';
हे देखील शक्य आहे: सिंगल कोट्समध्ये दुहेरी अवतरण चिन्ह

3. वर्ण सुटताना उद्भवणार्‍या सामान्य परिस्थिती

सामान्य परिस्थिती ज्यात पळून जाणाऱ्या पात्रांचा समावेश असतो

दुहेरी अवतरण व्यतिरिक्त, इतर अनेक अक्षरे आहेत जी कंपाइलर एका विशिष्ट पद्धतीने हाताळतो. उदाहरणार्थ, लाइन ब्रेक.

शब्दशः मध्ये लाइन ब्रेक कसा जोडायचा? यासाठी एक विशेष संयोजन देखील आहे:

\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");
Hell World!

\rकॅरेज रिटर्न कॅरेक्टर आहे

हा वर्ण मजकूर न बदलता कर्सरला वर्तमान ओळीच्या सुरुवातीला हलवतो. पुढे जे प्रदर्शित होईल ते विद्यमान स्ट्रिंग अधिलिखित करेल.

उदाहरण:

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

\fपृष्ठ फीड वर्ण आहे

हे चिन्ह पहिल्या डॉट मॅट्रिक्स प्रिंटरच्या दिवसांपासून आमच्याकडे आले आहे. हा क्रम प्रिंटरवर आउटपुट केल्याने, नवीन पृष्ठ सुरू होईपर्यंत, कोणताही मजकूर मुद्रित न करता, प्रिंटर फक्त वर्तमान पत्रक फीड करेल.

आता आपण त्याला पेज ब्रेक किंवा नवीन पेज म्हणू .

\\बॅकस्लॅश आहे

येथे सर्व काही सरळ आहे. जर आपण आपल्या मजकुरातील अक्षरे सुटण्यासाठी बॅकस्लॅश वापरतो, तर स्ट्रिंगमध्ये बॅकस्लॅश अक्षर कसे लिहायचे?

हे सोपे आहे: मजकूरात बॅकस्लॅश जोडा — तुम्हाला सलग दोन लिहावे लागतील.

उदाहरण:

कोड कन्सोल आउटपुट
System.out.println("c:\projects\my\first");
संकलक अज्ञात पळून गेलेल्या वर्णांसाठी तुम्हाला ओरडतील.
System.out.println("c:\\projects\\my\\first");
ते कसे योग्य केले आहे!


4. युनिकोड एन्कोडिंग

तुम्हाला आधीच माहित आहे की, स्क्रीनवर प्रदर्शित होणारे प्रत्येक वर्ण विशिष्ट संख्यात्मक कोडशी संबंधित आहे. या कोडच्या प्रमाणित संचाला एन्कोडिंग म्हणतात .

एके काळी, जेव्हा संगणकाचा नव्याने शोध लागला तेव्हा प्रत्येक अक्षराला एन्कोड करण्यासाठी सात बिट (एक बाइटपेक्षा कमी) पुरेसे होते. पहिल्या एन्कोडिंगमध्ये फक्त 128 वर्ण आहेत. या एन्कोडिंगला ASCII असे म्हणतात .

ASCII म्हणजे अमेरिकन स्टँडर्ड कोड फॉर इन्फॉर्मेशन इंटरचेंज — प्रिंट करण्यायोग्य अक्षरे आणि काही विशेष कोडसाठी एक मानक अमेरिकन कोड टेबल.

यात 33 नॉन-प्रिंट करण्यायोग्य नियंत्रण वर्ण (जे मजकूर आणि रिक्त स्थानांवर प्रक्रिया कशी केली जाते यावर परिणाम करतात) आणि अंक, अप्परकेस आणि लोअरकेस लॅटिन अक्षरे आणि अनेक विरामचिन्हांसह 95 छापण्यायोग्य वर्ण आहेत.

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

संगणकाची लोकप्रियता वाढत असताना, प्रत्येक देशाने स्वतःचे एन्कोडिंग सोडण्यास सुरुवात केली. सामान्यतः, त्यांनी ASCII ला प्रारंभ बिंदू म्हणून घेतले आणि क्वचितच वापरलेले ASCII वर्ण त्यांच्या संबंधित वर्णमालेतील चिन्हांसह बदलले.

कालांतराने, एक कल्पना उदयास आली: एक एकल एन्कोडिंग तयार करा ज्यामध्ये जगातील प्रत्येक एन्कोडिंगचे सर्व वर्ण असतील.

युनिकोड एन्कोडिंग १

अशा प्रकारे, 1993 मध्ये, युनिकोड एन्कोडिंग तयार केले गेले आणि जावा भाषा ही पहिली प्रोग्रामिंग भाषा बनली ज्याने मजकूर संचयित करण्यासाठी हे एन्कोडिंग मानक म्हणून वापरले. आता युनिकोड हे संपूर्ण आयटी उद्योगाचे मानक आहे.

जरी युनिकोड हे स्वतःच मानक असले तरी त्यात अनेक प्रतिनिधित्व किंवा युनिकोड ट्रान्सफॉर्मेशन फॉरमॅट (UTF): UTF-8, UTF-16 आणि UTF-32 इ.

Java युनिकोड एन्कोडिंगची प्रगत आवृत्ती वापरते — UTF-16: प्रत्येक वर्ण 16 बिट्स (2 बाइट) मध्ये एन्कोड केलेला आहे. हे 65,536 वर्णांपर्यंत सामावून घेऊ शकते!

या एन्कोडिंगमध्ये तुम्हाला जगातील प्रत्येक वर्णमाला जवळजवळ प्रत्येक वर्ण सापडेल. साहजिकच संपूर्ण गोष्ट कोणालाच लक्षात नसते. आपण सर्वकाही जाणून घेऊ शकत नाही, परंतु आपण सर्वकाही Google करू शकता.

तुमच्‍या प्रोग्राममध्‍ये युनिकोड कॅरेक्‍टरचा कोड वापरून लिहिण्‍यासाठी, तुम्हाला \u+ कोड हेक्‍साडेसिमलमध्‍ये लिहावा लागेल . उदाहरणार्थ,\u00A9

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


5. युनिकोड: कोड पॉइंट

"640 किलोबाइट्स प्रत्येकासाठी पुरेसे असले पाहिजेत! किंवा नाही". (बिल गेट्सचे श्रेय दिलेले कोट)

जीवन उग्र आहे, आणि कालांतराने, UTF-16 एन्कोडिंग अपुरे पडू लागले. असे दिसून आले की बर्‍याच आशियाई भाषा आहेत आणि त्यांच्याकडे भरपूर ग्लिफ आहेत. आणि हे सर्व ग्लिफ फक्त 2 बाइट्समध्ये क्रॅम केले जाऊ शकत नाहीत.

काय करता येईल? अधिक बाइट्स वापरा !

पण चार प्रकार फक्त 2 बाइट्सचा आहे आणि तो 4 मध्ये बदलणे इतके सोपे नाही: जावा कोडच्या अब्जावधी ओळी जगभर लिहिल्या गेल्या आहेत, जर चार प्रकार अचानक 4 बाइट्स जावा मशीन बनला तर तो खंडित होईल. त्यामुळे आम्ही वर्ण प्रकार बदलू शकत नाही!

आणखी एक दृष्टीकोन आहे. लक्षात ठेवा आम्ही पात्रांच्या समोर बॅकस्लॅश ठेवून कसे सुटतो. मूलभूतपणे, आम्ही एकाधिक वर्ण वापरून एकल वर्ण एन्कोड केले.

Java च्या निर्मात्यांनी हाच दृष्टीकोन वापरण्याचा निर्णय घेतला.

दृष्यदृष्ट्या एक वर्ण म्हणून दिसणारे काही वर्ण charएका स्ट्रिंगमध्ये दोन एस म्हणून एन्कोड केलेले आहेत:

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

आता तुमचा Java प्रोग्राम कन्सोलवर इमोजी आउटपुट करू शकतो 😎