En forelesningsbit med en mentor som en del av Codegym University-kurset. Meld deg på hele kurset.


"Hilsen, Amigo. En gang i tiden lærte du at for å skrive en streng med tegn i kode, må du pakke dem inn i anførselstegn."

"Ja, og det gir oss en streng bokstavelig talt . Det var ikke lenge siden jeg fant ut om dette."

"I vårt yrke var det lenge siden. Men det er ikke poenget akkurat nå. I stedet, vennligst fortell meg hva jeg skal gjøre hvis vi trenger anførselstegn inne i en streng bokstavelig?"

"Hmm... En streng som inneholder anførselstegn - hva kan være enklere. Jeg er sikker på at det er en måte..."

"Ja. La oss si at vi vil vise teksten "Friends" was nominated for an "Oscar". Hvordan ville vi gjort det?"

"For å være ærlig har jeg ingen anelse. Jeg kan ikke komme på noe."

"Du vil ikke kunne komme til en løsning gjennom logikk. La meg bare vise deg hva du skal gjøre.

Kode Notater
String s = ""Friends" was nominated for an "Oscar"";
Dette alternativet vil ikke fungere!"

"Dette alternativet vil ikke fungere, fordi kompilatoren tolker dette som en helt annen kode:

Kode Notater
String s = ""Friends" was nominated for an "Oscar"";
Dette alternativet vil ikke fungere!"

"Etter at kompilatoren støter på doble anførselstegn i koden, behandler den det som følger som begynnelsen på en streng-literal. Det neste doble anførselstegn indikerer slutten på strengen-literal."

"Så hvordan skriver du doble anførselstegn inne i en bokstavelig?"

"Det er en måte. Det kalles å unnslippe tegn . Du skriver bare anførselstegn innenfor tekststrengen. Og før anførselstegnene legger du til \ ( omvendt skråstrek ).

"Slik ser strengen bokstavelig ut når den er skrevet riktig:

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

"Kompilatoren vil tolke alt riktig og vil ikke betrakte anførselstegnet etter skråstreken som et normalt anførselstegn.

"I tillegg, hvis du sender ut denne strengen til skjermen, vil sitatene med omvendte skråstreker bli behandlet riktig, og teksten vil vises uten noen omvendte skråstreker:"Friends" was nominated for an "Oscar"

"Vel, jeg skal ikke si at dette er super praktisk ..."

"Men hva kan du gjøre, det er reglene. Et annet viktig poeng. Et anførselstegn foran med et skråstrek representerer et enkelt tegn: vi bruker ganske enkelt glatt notasjon som ikke forstyrrer kompilatorens evne til å gjenkjenne strengbokstaver i vår kode. Du kan tilordne anførselstegn til en charvariabel:

Kode Notater
char c = '\"';
\"er ett tegn, ikke to
char c = '"';
Dette er også mulig: et dobbelt anførselstegn i enkle anførselstegn

Vanlige situasjoner som oppstår når du unnslipper tegn

"I tillegg til doble anførselstegn er det mange andre tegn som kompilatoren håndterer på en spesiell måte. For eksempel et linjeskift.

"Hvordan legger vi til et linjeskift til en bokstavelig? Det er også en spesiell kombinasjon for dette:

\n
Linjeskiftkarakter

"Hvis du trenger å legge til et linjeskift til en bokstavelig streng, legger du bare til et par tegn" \n.

Eksempel:

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

"Det er totalt 8 spesielle kombinasjoner som denne, som også kalles escape-sekvenser . Her er de:

Kode Beskrivelse
\t Sett inn et tabulatortegn
\b Sett inn et tilbaketegn
\n Sett inn et linjeskifttegn
\r Sett inn et vognreturtegn
\f Sett inn et sidefeedtegn
\' Sett inn et enkelt anførselstegn
\" Sett inn et dobbelt anførselstegn
\\ Sett inn en omvendt skråstrek

"Du har allerede vist meg to av dem. Hva betyr de andre 6?"

"Jeg skal forklare alt nå.

\ter et tabulatortegn

Når denne teksten vises i tekst, tilsvarer det å trykke på Tabtasten mens du skriver. Den forskyver teksten som følger den og gjør det mulig å justere tekst.

Eksempel:

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

\bbetyr "gå tilbake ett tegn"

Denne sekvensen i en streng tilsvarer å trykke på Backspacetasten på tastaturet. Det fjerner tegnet som går foran det:

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

\rer vognretur-tegnet

Dette tegnet flytter markøren til begynnelsen av gjeldende linje uten å endre teksten (avhenger av JDK-versjonen). Det neste som vises, vil overskrive den eksisterende strengen.

Eksempel:

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

\fer et sidefeedtegn

Dette symbolet kommer ned til oss fra de første matriseskrivernes dager. Å sende denne sekvensen til en skriver vil føre til at skriveren ganske enkelt mater ut det gjeldende arket, uten å skrive ut noen tekst, til en ny side begynner.

Nå vil vi kalle det et sideskift eller ny side .

\\er en omvendt skråstrek

Alt er greit her. Hvis vi bruker en omvendt skråstrek for å unnslippe tegn i teksten vår, hvordan skriver vi da et omvendt skråstrektegn i strengen?

Det er enkelt: legg til en omvendt skråstrek i teksten - du må skrive to på rad.

Eksempel:

Kode Konsollutgang
System.out.println("c:\projects\my\first");
Kompilatoren vil rope på deg for ukjente rømte karakterer.
System.out.println("c:\\projects\\my\\first");
Det er slik det er gjort riktig!

"Det er fornuftig å bruke doble skråstreker. Men jeg har ikke umiddelbart klart å huske alt annet. Jeg må stole på hintene dine."

"Grandevis vil du huske hva du trenger. Ikke bekymre deg. Og for alt annet er det Google.

Unicode-koding

"Du vet allerede at hvert tegn som vises på skjermen tilsvarer en spesifikk numerisk kode. Et standardisert sett med disse kodene kalles en koding .

"Det var en gang, da datamaskiner nylig ble oppfunnet, var syv bits (mindre enn én byte) nok til å kode hvert tegn. Den første kodingen inneholdt bare 128 tegn. Denne kodingen ble kalt ASCII . "

"Det er et merkelig navn."

"Det er ikke noe rart med det. Det er en forkortelse. ASCII står for American Standard Code for Information Interchange - en standard amerikansk kodetabell for utskrivbare tegn og noen spesialkoder."

"Den består av 33 ikke-utskrivbare kontrolltegn (som påvirker hvordan tekst og mellomrom behandles) og 95 utskrivbare tegn, inkludert tall, store og små latinske bokstaver, og flere skilletegn.

"Etter hvert som datamaskiner vokste i popularitet, begynte hvert land å gi ut sin egen koding. Vanligvis tok de utgangspunkt i ASCII og erstattet sjelden brukte ASCII-tegn med symboler fra deres respektive alfabeter.

"Over tid dukket det opp en idé: lag en enkelt koding som inneholder alle tegnene til hver koding i verden.

Unicode-koding

"I 1993 ble således Unicode- kodingen opprettet, og Java-språket ble det første programmeringsspråket som brukte denne kodingen som standard for lagring av tekst. Nå er Unicode standarden for hele IT-bransjen.

"Selv om Unicode i seg selv er standarden, har den flere representasjoner eller Unicode-transformasjonsformater (UTF): UTF-8, UTF-16 og UTF-32, etc.

"Java bruker en avansert versjon av Unicode-koding — UTF-16: hvert tegn er kodet i 16 biter (2 byte). Det kan romme opptil 65 536 tegn! Du kan finne nesten alle tegn i alle alfabeter i verden i denne kodingen. "

"Jeg håper jeg ikke trenger å kunne det utenat?"

"Hvis du vil, gå for det!"

"Ok, greit. Jeg bruker denne regelen: du kan ikke vite alt, men du kan Google alt."

"Å vedta en rasjonell tilnærming er alt. Så for å skrive et Unicode-tegn i programmet ditt ved å bruke koden, må du skrive \u+ koden i heksadesimal . For eksempel,\u00A9

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

Unicode: kodepunkt

"640 kilobyte burde være nok for alle! Eller ikke". Bill Gates sa det en gang. Eller ikke. I det minste er dette sitatet tilskrevet ham."

"Haha. 640 kilobyte er ikke engang nok til å laste en renserobots hjerne."

"Livet er røft, og over tid begynte UTF-16-kodingen å være utilstrekkelig. Det viser seg at det er mange asiatiske språk, og de har mange glyfer. Og alle disse glyphene kan rett og slett ikke stappes inn i 2 byte ."

"Så hva gjør vi?"

"Bruk flere byte ! Men char-typen er bare 2 byte, og å endre den til 4 er ikke så lett: milliarder av linjer med Java-kode har blitt skrevet over hele verden, som ville gå i stykker hvis char-typen plutselig blir 4 byte en Java maskin. Så vi kan ikke endre røyetypen!

"Det er en annen tilnærming. Husk hvordan vi unnslipper karakterer ved å sette en omvendt skråstrek foran dem. I utgangspunktet kodet vi et enkelt tegn ved å bruke flere tegn. Javas skapere bestemte seg for å bruke samme tilnærming.

"Noen tegn som visuelt vises som et enkelt tegn er kodet som to chars i en streng:

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

"Nå kan Java-programmet ditt til og med sende ut emojier til konsollen 😎"

"Jeg vil definitivt bruke det til å ha det gøy!"