1. Årsager til at undslippe karakterer
Engang lærte du, at for at kunne skrive en streng af tegn i kode, skal du pakke dem ind i dobbelte anførselstegn. Resultatet er en streng bogstavelig .
Men hvad gør vi, hvis vi har brug for anførselstegn inde i en streng bogstavelig? En streng med anførselstegn - hvad kunne være nemmere?
Lad os sige, at vi vil vise teksten "Friends" was nominated for an "Oscar"
. Hvordan gør du det?
Kode | Noter |
---|---|
|
Denne mulighed virker ikke! |
Problemet er, at compileren tror, du skriver fuldstændig uventet kode:
Kode | Noter |
---|---|
|
Denne mulighed virker ikke! |
Efter at compileren støder på dobbelte anførselstegn i koden, behandler den det følgende som begyndelsen på en streng bogstavelig. Det næste dobbelte anførselstegn angiver slutningen af strengen.
Så hvordan skriver man dobbelte anførselstegn inde i en bogstavelig?
2. Undslippende tegn
Der er en måde. Det kaldes undslippende 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 bogstavelig ud, når den er skrevet korrekt:
Kode | Noter |
---|---|
|
Dette vil virke! |
Compileren vil fortolke alt korrekt og vil ikke betragte anførselstegn efter omvendt skråstreg som et normalt anførselstegn.
Hvad mere er, hvis du udsender denne streng til skærmen, vil anførselstegnene med omvendte skråstreg blive behandlet korrekt, og teksten vil blive vist uden omvendte skråstreg:"Friends" was nominated for an "Oscar"
Endnu en vigtig pointe. Et anførselstegn foran en 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 citater til en char
variabel:
Kode | Noter |
---|---|
|
\" er et tegn, ikke to |
|
Dette er også muligt: et dobbelt anførselstegn inden for enkelte anførselstegn |
3. 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
Hvis du har brug for at tilføje et linjeskift til en streng-literal, skal du blot tilføje et par tegn: \n
.
Eksempel:
Kode | Konsoludgang |
---|---|
|
|
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 kender to af dem, men hvad betyder de andre 6?
\t
er et tabulatortegn
Når denne tekst vises i tekst, svarer det til at trykke på Tab
tasten, mens du skriver. Det flytter den tekst, der følger efter den, og gør det muligt at justere tekst.
Eksempel:
Kode | Konsoludgang |
---|---|
|
|
\b
betyder 'gå et tegn tilbage'
Denne sekvens i en streng svarer til at trykke på Backspace
tasten på tastaturet. Det fjerner tegnet, der går forud:
Kode | Konsoludgang |
---|---|
|
|
\r
er vognretur-karakteren
Dette tegn flytter markøren til begyndelsen af den aktuelle linje uden at ændre teksten. Det næste, der vises næste gang, vil overskrive den eksisterende streng.
Eksempel:
Kode | Konsoludgang |
---|---|
|
|
\f
er et sidefeed-tegn
Dette symbol kommer ned til os fra tiden med 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 |
---|---|
|
Compileren vil råbe af dig efter ukendte undslupne karakterer. |
|
Sådan er det gjort rigtigt! |
4. Unicode-kodning
Som du allerede ved, svarer hvert tegn, der vises på skærmen, til en bestemt numerisk kode. Et standardiseret sæt af disse koder kaldes en kodning .
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 .
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 frigive 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.
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 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). Den kan rumme op til 65.536 tegn!
Du kan finde næsten alle tegn i hvert alfabet i verden i denne kodning. Naturligvis er der ingen, der har lært det hele udenad. Man kan ikke vide alt, men man kan google alt.
For at skrive et Unicode-tegn i dit program ved hjælp af dets kode, skal du skrive \u
+ koden i hexadecimal . For eksempel,\u00A9
Kode | Konsoludgang |
---|---|
|
|
5. Unicode: kodepunkt
"640 kilobytes burde være nok til alle! Eller ej". (Citat tilskrevet Bill Gates)
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 i 2 bytes.
Hvad kan gøres? Brug flere bytes !
Men char-typen er kun 2 bytes, og at ændre den til 4 er ikke så let: Der er skrevet milliarder af linjer med Java-kode over hele verden, som ville gå i stykker, hvis char-typen pludselig bliver 4 bytes til en Java-maskine. Så vi kan ikke ændre char-typen!
Der er en anden tilgang. Husk, hvordan vi undslipper karakterer ved at sætte en 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 char
s i en streng:
Kode | Konsoludgang |
---|---|
|
|
Nu kan dit Java-program endda udsende emojis til konsollen 😎
GO TO FULL VERSION