Et foredragsuddrag med en mentor som en del af Codegym University-kurset. Tilmeld dig hele kurset.


"Hilsen, Amigo. Engang lærte du, at for at skrive en streng af tegn i kode, skal du pakke dem ind i dobbelte anførselstegn."

"Ja, og det giver os en streng bogstavelig talt . Det var ikke ret længe siden, jeg fandt ud af det her."

"I vores fag var det længe siden. Men det er ikke meningen lige nu. Fortæl mig i stedet, hvad jeg skal gøre, hvis vi har brug for anførselstegn inde i en bogstavelig streng?"

"Hmm... En streng med citater - hvad kunne være nemmere. Jeg er sikker på, at der er en måde..."

"Ja. Lad os sige, at vi vil vise teksten "Friends" was nominated for an "Oscar". Hvordan ville vi gøre det?"

"For at være ærlig, så aner jeg det ikke. Jeg kan ikke komme i tanke om noget."

"Du vil ikke være i stand til at finde en løsning gennem logik. Lad mig bare vise dig, hvad du skal gøre.

Kode Noter
String s = ""Friends" was nominated for an "Oscar"";
Denne mulighed virker ikke!"

"Denne mulighed vil ikke fungere, fordi compileren fortolker dette som en helt anden kode:

Kode Noter
String s = ""Friends" was nominated for an "Oscar"";
Denne mulighed virker ikke!"

"Efter compileren støder på dobbelte anførselstegn i koden, behandler den det følgende som begyndelsen af ​​en streng-literal. Det næste dobbelte anførselstegn angiver slutningen af ​​strengen-literal."

"Så hvordan skriver man dobbelte anførselstegn inde i en bogstavelig?"

"Der er en måde. Det kaldes at undslippe tegn . Du skriver bare anførselstegnene inden for tekststrengen. Og før anførselstegnene tilføjer du symbolet \ ( omvendt skråstreg ).

"Sådan ser strengen bogstaveligt ud, når den er skrevet korrekt:

Kode Noter
String s = "\"Friends\" was nominated for an \"Oscar\"";
Dette vil virke!

"Compileren vil fortolke alt korrekt og vil ikke betragte anførselstegn efter omvendt skråstreg som et normalt anførselstegn.

"Hvis mere er, hvis du udsender denne streng til skærmen, vil citaterne med omvendte skråstreg blive behandlet korrekt, og teksten vil blive vist uden omvendte skråstreg:"Friends" was nominated for an "Oscar"

"Nå, jeg vil ikke sige, at det her er super bekvemt..."

"Men hvad kan du gøre, det er reglerne. Et andet vigtigt punkt. Et anførselstegn foran et omvendt skråstreg repræsenterer et enkelt tegn: vi bruger simpelthen slick notation, der ikke forstyrrer compilerens evne til at genkende strenge bogstaver i vores kode. Du kan tildele anførselstegn til en charvariabel:

Kode Noter
char c = '\"';
\"er et tegn, ikke to
char c = '"';
Dette er også muligt: ​​et dobbelt anførselstegn inden for enkelte anførselstegn

Almindelige situationer, der opstår, når man undslipper tegn

"Ud over dobbelte anførselstegn er der mange andre tegn, som compileren håndterer på en særlig måde. For eksempel et linjeskift.

"Hvordan føjer vi et linjeskift til et bogstav? Der er også en speciel kombination til dette:

\n
Linjeskift karakter

"Hvis du har brug for at tilføje et linjeskift til en streng bogstavelig, skal du blot tilføje et par tegn" \n.

Eksempel:

Kode Konsoludgang
System.out.println("Best regards, \n Anonymous");
Best regards,
Anonymous

"Der er i alt 8 specielle kombinationer som denne, som også kaldes escape-sekvenser . Her er de:

Kode Beskrivelse
\t Indsæt et tabulatortegn
\b Indsæt et backspace- tegn
\n Indsæt et linjeskifttegn
\r Indsæt et vognreturtegn
\f Indsæt et sidefeed- tegn
\' Indsæt et enkelt anførselstegn
\" Indsæt et dobbelt anførselstegn
\\ Indsæt en omvendt skråstreg

"Du har allerede vist mig to af dem. Hvad betyder de andre 6?"

"Jeg vil forklare det hele nu.

\ter et tabulatortegn

Når denne tekst vises i tekst, svarer det til at trykke på Tabtasten, mens du skriver. Det flytter den tekst, der følger efter den, og gør det muligt at justere tekst.

Eksempel:

Kode Konsoludgang
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

\bbetyder 'gå et tegn tilbage'

Denne sekvens i en streng svarer til at trykke på Backspacetasten på tastaturet. Det fjerner tegnet, der går forud:

Kode Konsoludgang
System.out.println("Hello\b\b World");
Hel World

\rer vognretur-karakteren

Dette tegn flytter markøren til begyndelsen af ​​den aktuelle linje uden at ændre teksten (afhænger af JDK-versionen). Det næste, der vises næste gang, vil overskrive den eksisterende streng.

Eksempel:

Kode Konsoludgang
System.out.println("Greetings\r World!");
World!ngs

\fer et sidefeed-tegn

Dette symbol kommer ned til os fra de første matrixprintere. Udskrivning af denne sekvens til en printer vil få printeren til blot at fremføre det aktuelle ark uden at udskrive nogen tekst, indtil en ny side begynder.

Nu vil vi kalde det et sideskift eller ny side .

\\er et skråstreg

Alt er ligetil her. Hvis vi bruger en skråstreg til at undslippe tegn i vores tekst, hvordan skriver vi så selve skråstreg i strengen?

Det er enkelt: Tilføj en omvendt skråstreg til teksten - du skal skrive to i træk.

Eksempel:

Kode Konsoludgang
System.out.println("c:\projects\my\first");
Compileren vil råbe ad dig for ukendte undslupne karakterer.
System.out.println("c:\\projects\\my\\first");
Sådan er det gjort rigtigt!

"Det giver mening at bruge dobbelte skråstreger. Men jeg har ikke umiddelbart kunnet lære alt andet udenad. Jeg bliver nødt til at stole på dine hints."

"Efterhånden vil du huske, hvad du har brug for. Bare rolig. Og for alt andet er der Google.

Unicode-kodning

"Du ved allerede, at hvert tegn, der vises på skærmen, svarer til en bestemt numerisk kode. Et standardiseret sæt af disse koder kaldes en kodning .

"Der var engang, da computere blev opfundet for nylig, var syv bits (mindre end én byte) nok til at kode hvert tegn. Den første kodning indeholdt kun 128 tegn. Denne kodning blev kaldt ASCII . "

"Det er et mærkeligt navn."

"Der er ikke noget mærkeligt ved det. Det er en forkortelse. ASCII står for American Standard Code for Information Interchange - en standard amerikansk kodetabel for printbare tegn og nogle specielle koder."

"Den består af 33 ikke-udskrivbare kontroltegn (som påvirker, hvordan tekst og mellemrum behandles) og 95 udskrivbare tegn, inklusive tal, store og små latinske bogstaver og flere tegnsætningstegn.

"Efterhånden som computere voksede i popularitet, begyndte hvert land at udgive sin egen kodning. Normalt tog de udgangspunkt i ASCII og erstattede sjældent brugte ASCII-tegn med symboler fra deres respektive alfabeter.

"Med tiden opstod en idé: skab en enkelt kodning, der indeholder alle tegnene i hver kodning i verden.

Unicode-kodning

"I 1993 blev Unicode -kodningen således skabt, og Java-sproget blev det første programmeringssprog, der brugte denne kodning som standard for lagring af tekst. Nu er Unicode standarden for hele it-branchen.

"Selvom Unicode i sig selv er standarden, har den flere repræsentationer eller Unicode-transformationsformater (UTF): UTF-8, UTF-16 og UTF-32 osv.

"Java bruger en avanceret version af Unicode-kodning — UTF-16: hvert tegn er kodet i 16 bit (2 bytes). Det kan rumme op til 65.536 tegn! Du kan finde næsten alle tegn i alle alfabeter i verden i denne kodning. "

"Jeg håber ikke, jeg behøver at kunne det udenad?"

"Hvis du vil, så gå efter det!"

"Okay, fint. Jeg vil bruge denne regel: du kan ikke vide alt, men du kan Google alt."

"At vedtage en rationel tilgang er alt. Så for at skrive et Unicode-tegn i dit program ved hjælp af dets kode, skal du skrive \u+ koden i hexadecimal . F.eks.\u00A9

Kode Konsoludgang
System.out.println("\u00A9 CodeGym");
© CodeGym

Unicode: kodepunkt

"640 kilobytes burde være nok til alle! Eller ej". Bill Gates sagde det engang. Eller ikke. I det mindste tilskrives dette citat ham."

"Haha. 640 kilobytes er ikke engang nok til at indlæse en renserobots hjerne."

"Livet er barskt, og med tiden begyndte UTF-16-kodningen at være utilstrækkelig. Det viser sig, at der er mange asiatiske sprog, og de har mange glyffer. Og alle disse glyffer kan simpelthen ikke proppes ind i 2 bytes ."

"Så hvad gør vi?"

"Brug flere bytes ! Men char-typen er kun 2 bytes, og at ændre den til 4 er ikke så let: milliarder af linjer Java-kode er blevet skrevet over hele verden, som ville gå i stykker, hvis char-typen pludselig bliver 4 bytes en Java maskine. Så vi kan ikke ændre char-typen!

"Der er en anden tilgang. Husk, hvordan vi undslipper tegn ved at sætte en omvendt skråstreg foran dem. Grundlæggende kodede vi et enkelt tegn ved hjælp af flere tegn. Javas skabere besluttede at bruge den samme tilgang.

"Nogle tegn, der visuelt vises som et enkelt tegn, er kodet som to chars i en streng:

Kode Konsoludgang
System.out.println("\uD83D\uDD0A");
🔊

"Nu kan dit Java-program endda udsende emojis til konsollen 😎"

"Jeg vil helt sikkert bruge det til at have det sjovt!"