1. Årsaker til å unnslippe karakterer
En gang i tiden lærte du at for å skrive en streng med tegn i kode, må du pakke dem inn i doble anførselstegn. Resultatet er en streng bokstavelig .
Men hva gjør vi hvis vi trenger anførselstegn inne i en streng bokstavelig? En streng som inneholder anførselstegn – hva kan være enklere?
La oss si at vi vil vise teksten "Friends" was nominated for an "Oscar"
. Hvordan gjør du det?
Kode | Notater |
---|---|
|
Dette alternativet vil ikke fungere! |
Problemet er at kompilatoren tror du skriver helt uventet kode:
Kode | Notater |
---|---|
|
Dette alternativet vil ikke fungere! |
Etter at kompilatoren møter doble anførselstegn i koden, behandler den det som følger som begynnelsen på en streng bokstavelig. Det neste doble anførselstegn indikerer slutten av strengen.
Så hvordan skriver du doble anførselstegn inne i en bokstavelig?
2. Rømmende tegn
Det er en måte. Det kalles unnslippende tegn . Du skriver bare anførselstegn innenfor tekststrengen. Og før anførselstegnene legger du til symbolet \
( omvendt skråstrek ).
Slik ser strengen bokstavelig ut når den er skrevet riktig:
Kode | Notater |
---|---|
|
Dette vil fungere! |
Kompilatoren vil tolke alt riktig og vil ikke betrakte anførselstegn etter omvendt skråstrek som et normalt anførselstegn.
Dessuten, hvis du sender ut denne strengen til skjermen, vil anførselstegnene med omvendte skråstreker bli behandlet riktig, og teksten vil vises uten omvendte skråstreker:"Friends" was nominated for an "Oscar"
Et annet viktig poeng. Et anførselstegn foran et omvendt skråstrek representerer et enkelt tegn: vi bruker ganske enkelt glatt notasjon som ikke forstyrrer kompilatorens evne til å gjenkjenne strengliteraler i koden vår. Du kan tilordne anførselstegn til en char
variabel:
Kode | Notater |
---|---|
|
\" er ett tegn, ikke to |
|
Dette er også mulig: et dobbelt anførselstegn i enkle anførselstegn |
3. 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
Hvis du trenger å legge til et linjeskift i en streng bokstavelig, trenger du bare å legge til et par tegn: \n
.
Eksempel:
Kode | Konsollutgang |
---|---|
|
|
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 er kjent med to av dem, men hva betyr de andre 6?
\t
er et tabulatortegn
Når denne teksten vises i tekst, tilsvarer det å trykke på Tab
tasten mens du skriver. Den forskyver teksten som følger den og gjør det mulig å justere tekst.
Eksempel:
Kode | Konsollutgang |
---|---|
|
|
\b
betyr "gå tilbake ett tegn"
Denne sekvensen i en streng tilsvarer å trykke på Backspace
tasten på tastaturet. Det fjerner tegnet som går foran det:
Kode | Konsollutgang |
---|---|
|
|
\r
er vognretur-tegnet
Dette tegnet flytter markøren til begynnelsen av gjeldende linje uten å endre teksten. Det neste som vises, vil overskrive den eksisterende strengen.
Eksempel:
Kode | Konsollutgang |
---|---|
|
|
\f
er 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 |
---|---|
|
Kompilatoren vil rope på deg for ukjente rømte karakterer. |
|
Det er slik det er gjort riktig! |
4. Unicode-koding
Som du allerede vet, tilsvarer hvert tegn som vises på skjermen en bestemt numerisk kode. Et standardisert sett med disse kodene kalles en koding .
En gang i tiden, 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 .
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.
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). Den kan romme opptil 65 536 tegn!
Du kan finne nesten alle tegn i alle alfabeter i verden i denne kodingen. Naturligvis er det ingen som har husket hele greia. Du kan ikke vite alt, men du kan google alt.
For å skrive et Unicode-tegn i programmet ditt ved å bruke koden, må du skrive \u
+ koden i heksadesimal . For eksempel,\u00A9
Kode | Konsollutgang |
---|---|
|
|
5. Unicode: kodepunkt
"640 kilobyte burde være nok for alle! Eller ikke". (Sitat tilskrevet Bill Gates)
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 tegnene kan rett og slett ikke stappes inn i 2 byte.
Hva kan bli gjort? 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 er 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 et 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 char
s i en streng:
Kode | Konsollutgang |
---|---|
|
|
Nå kan Java-programmet ditt til og med sende ut emojier til konsollen 😎
GO TO FULL VERSION