1. Motive pentru evadarea caracterelor
Cândva, ați învățat că, pentru a scrie un șir de caractere în cod, trebuie să le înfășurați între ghilimele duble. Rezultatul este un șir literal .
Dar ce facem dacă avem nevoie de ghilimele în interiorul unui șir literal? Un șir care conține ghilimele — ce ar putea fi mai ușor?
Să presupunem că vrem să afișăm textul "Friends" was nominated for an "Oscar"
. Cum faci asta?
Cod | Note |
---|---|
|
Această opțiune nu va funcționa! |
Problema este că compilatorul crede că scrieți cod complet neașteptat:
Cod | Note |
---|---|
|
Această opțiune nu va funcționa! |
După ce compilatorul întâlnește ghilimele duble în cod, tratează ceea ce urmează ca începutul unui șir literal. Următoarele ghilimele duble indică sfârșitul literalului șir.
Deci, cum scrieți ghilimele duble într-un literal?
2. Evadarea caracterelor
Există o cale. Se numește caractere care evadează . Doar scrieți ghilimelele în șirul de text. Și înainte de ghilimele, adăugați simbolul \
( bară oblică inversă ).
Iată cum arată literalul șir atunci când este scris corect:
Cod | Note |
---|---|
|
Aceasta va funcționa! |
Compilatorul va interpreta totul corect și nu va considera ghilimelele de după bară oblică inversă ca fiind ghilimele normale.
În plus, dacă scoateți acest șir pe ecran, ghilimele cu bare oblice inverse vor fi procesate corect, iar textul va fi afișat fără bare oblice inverse:"Friends" was nominated for an "Oscar"
Un alt punct important. Un ghilimele precedat de o bară oblică inversă reprezintă un singur caracter: pur și simplu folosim o notație elegantă care nu interferează cu capacitatea compilatorului de a recunoaște literalele șir în codul nostru. Puteți atribui ghilimele unei char
variabile:
Cod | Note |
---|---|
|
\" este un personaj, nu doi |
|
Acest lucru este posibil și: un ghilimele duble în interiorul ghilimelelor simple |
3. Situații frecvente care apar la evadarea personajelor
Pe lângă ghilimele duble, există multe alte caractere pe care compilatorul le gestionează într-un mod special. De exemplu, o întrerupere de linie.
Cum adăugăm o întrerupere de linie la un literal? Există, de asemenea, o combinație specială pentru aceasta:
\n
Dacă trebuie să adăugați o întrerupere de linie la un literal șir, trebuie doar să adăugați câteva caractere: \n
.
Exemplu:
Cod | Ieșire de consolă |
---|---|
|
|
Există un total de 8 combinații speciale ca aceasta, care sunt numite și secvențe de evacuare . Aici sunt ei:
Cod | Descriere |
---|---|
\t |
Inserați un caracter tabulator |
\b |
Introduceți un caracter înapoi |
\n |
Introduceți un caracter de linie nouă |
\r |
Introduceți un caracter de întoarcere car |
\f |
Inserați un caracter de feed de pagină |
\' |
Introduceți un singur ghilimele |
\" |
Introduceți ghilimele duble |
\\ |
Introduceți o bară oblică inversă |
Sunteți familiarizat cu două dintre ele, dar ce înseamnă celelalte 6?
\t
este un caracter tabulator
Când acest text apare în text, este echivalent cu apăsarea Tab
tastei în timpul tastării. Deplasează textul care îl urmează și face posibilă alinierea textului.
Exemplu:
Cod | Ieșire de consolă |
---|---|
|
|
\b
înseamnă „întoarce-te cu un caracter”
Această secvență într-un șir este echivalentă cu apăsarea Backspace
tastei de pe tastatură. Îndepărtează caracterul care îl precede:
Cod | Ieșire de consolă |
---|---|
|
|
\r
este caracterul de întoarcere a căruciorului
Acest caracter mută cursorul la începutul liniei curente fără a modifica textul. Indiferent ce va fi afișat în continuare, va suprascrie șirul existent.
Exemplu:
Cod | Ieșire de consolă |
---|---|
|
|
\f
este un caracter de feed de pagină
Acest simbol vine la noi din zilele primelor imprimante matriciale. Ieșirea acestei secvențe la o imprimantă ar face ca imprimanta să alimenteze pur și simplu foaia curentă, fără a imprima niciun text, până când începe o nouă pagină.
Acum l-am numi o întrerupere de pagină sau o pagină nouă .
\\
este o bară oblică inversă
Totul este simplu aici. Dacă folosim o bară oblică inversă pentru a evada caracterele din textul nostru, atunci cum scriem un caracter oblică inversă în șir?
Este simplu: adăugați o bară oblică inversă textului - trebuie să scrieți două la rând.
Exemplu:
Cod | Ieșire de consolă |
---|---|
|
Compilatorul va țipa la tine pentru caractere necunoscute scăpate. |
|
Așa se face bine! |
4. Codificare Unicode
După cum știți deja, fiecare caracter afișat pe ecran corespunde unui anumit cod numeric. Un set standardizat de aceste coduri se numește codificare .
Pe vremuri, când computerele erau nou inventate, șapte biți (mai puțin de un octet) erau suficienți pentru a codifica fiecare caracter. Prima codificare conținea doar 128 de caractere. Această codificare a fost numită ASCII .
ASCII înseamnă American Standard Code for Information Interchange — un tabel american standard de coduri pentru caractere imprimabile și unele coduri speciale.
Este format din 33 de caractere de control neprintabile (care afectează modul în care textul și spațiile sunt procesate) și 95 de caractere imprimabile, inclusiv numere, litere latine mari și mici și mai multe semne de punctuație.
Pe măsură ce computerele au crescut în popularitate, fiecare țară a început să-și lanseze propria codare. De obicei, au luat ASCII ca punct de plecare și au înlocuit caracterele ASCII rar folosite cu simboluri din alfabetele lor respective.
De-a lungul timpului, a apărut o idee: creați o singură codificare care conține toate caracterele fiecărei codificări din lume.
Astfel, în 1993, a fost creată codificarea Unicode , iar limbajul Java a devenit primul limbaj de programare care a folosit această codificare ca standard pentru stocarea textului. Acum Unicode este standardul pentru întreaga industrie IT.
Deși Unicode în sine este standardul, are mai multe reprezentări sau formate de transformare Unicode (UTF): UTF-8, UTF-16 și UTF-32 etc.
Java folosește o versiune avansată de codificare Unicode — UTF-16: fiecare caracter este codificat pe 16 biți (2 octeți). Poate găzdui până la 65.536 de caractere!
Puteți găsi aproape fiecare caracter din fiecare alfabet din lume în această codificare. Desigur, nimeni nu a memorat totul. Nu poți ști totul, dar poți căuta totul pe google.
Pentru a scrie un caracter Unicode în programul dvs. folosind codul său, trebuie să scrieți \u
+ codul în hexazecimal . De exemplu,\u00A9
Cod | Ieșire de consolă |
---|---|
|
|
5. Unicode: punct de cod
„640 kilobytes ar trebui să fie suficienți pentru toată lumea! Sau nu”. (Citat atribuit lui Bill Gates)
Viața este dură și, în timp, codificarea UTF-16 a început să fie inadecvată. Se pare că există o mulțime de limbi asiatice și au o mulțime de glife. Și toate aceste glife pur și simplu nu pot fi înghesuite în 2 octeți.
Ce se poate face? Utilizați mai mulți octeți !
Dar tipul char are doar 2 octeți și schimbarea lui la 4 nu este atât de ușoară: în întreaga lume au fost scrise miliarde de linii de cod Java, care s-ar rupe dacă tipul char devine brusc de 4 octeți o mașină Java. Deci nu putem schimba tipul de caractere!
Există o altă abordare. Amintiți-vă cum scăpăm de personaje punând o bară oblică inversă în fața lor. Practic, am codificat un singur caracter folosind mai multe caractere.
Creatorii lui Java au decis să folosească aceeași abordare.
Unele caractere care apar vizual ca un singur caracter sunt codificate ca două char
s într-un șir:
Cod | Ieșire de consolă |
---|---|
|
|
Acum, programul dvs. Java poate scoate chiar și emoji-uri pe consolă 😎
GO TO FULL VERSION