1. Orsaker till att tecken flyr
En gång i tiden lärde du dig att för att skriva en sträng med tecken i kod måste du linda in dem med dubbla citattecken. Resultatet är en bokstavlig sträng .
Men vad gör vi om vi behöver citattecken inuti en bokstavlig sträng? En sträng som innehåller citattecken — vad kan vara enklare?
Låt oss säga att vi vill visa texten "Friends" was nominated for an "Oscar"
. Hur gör man det?
Koda | Anteckningar |
---|---|
|
Det här alternativet kommer inte att fungera! |
Problemet är att kompilatorn tror att du skriver helt oväntad kod:
Koda | Anteckningar |
---|---|
|
Det här alternativet kommer inte att fungera! |
Efter att kompilatorn stöter på dubbla citattecken i koden, behandlar den det som följer som början på en bokstavlig sträng. Nästa dubbla citattecken anger slutet på strängen.
Så hur skriver man dubbla citattecken i en bokstavlig?
2. Flyktande tecken
Det finns ett sätt. Det kallas att fly tecken . Du skriver bara citattecken inom textsträngen. Och före citattecken lägger du till symbolen \
( omvänt snedstreck) .
Så här ser strängen bokstavlig ut när den är korrekt skriven:
Koda | Anteckningar |
---|---|
|
Detta kommer att fungera! |
Kompilatorn kommer att tolka allt korrekt och kommer inte att betrakta citattecken efter snedstrecket som ett normalt citattecken.
Dessutom, om du matar ut den här strängen på skärmen, kommer citattecken med omvänt snedstreck att bearbetas korrekt, och texten kommer att visas utan några omvända snedstreck:"Friends" was nominated for an "Oscar"
En annan viktig punkt. Ett citattecken som föregås av ett omvänt snedstreck representerar ett enda tecken: vi använder helt enkelt slick notation som inte stör kompilatorns förmåga att känna igen strängliteraler i vår kod. Du kan tilldela citattecken till en char
variabel:
Koda | Anteckningar |
---|---|
|
\" är ett tecken, inte två |
|
Detta är också möjligt: ett dubbelt citattecken inom enkla citattecken |
3. Vanliga situationer som uppstår när man undviker tecken
Förutom dubbla citattecken finns det många andra tecken som kompilatorn hanterar på ett speciellt sätt. Till exempel en radbrytning.
Hur lägger vi till en radbrytning till en bokstavlig? Det finns också en speciell kombination för detta:
\n
Om du behöver lägga till en radbrytning till en bokstavlig sträng behöver du bara lägga till ett par tecken: \n
.
Exempel:
Koda | Konsolutgång |
---|---|
|
|
Det finns totalt 8 speciella kombinationer som denna, som också kallas flyktsekvenser . Här är de:
Koda | Beskrivning |
---|---|
\t |
Infoga ett tabbtecken |
\b |
Infoga ett backstegstecken |
\n |
Infoga ett nyradstecken |
\r |
Infoga ett vagnreturtecken |
\f |
Infoga ett sidmatningstecken |
\' |
Infoga ett enda citattecken |
\" |
Infoga ett dubbelt citattecken |
\\ |
Infoga ett snedstreck |
Du är bekant med två av dem, men vad betyder de andra sex?
\t
är ett tabbtecken
När den här texten visas i text motsvarar det att trycka på Tab
knappen medan du skriver. Den förskjuter texten som följer den och gör det möjligt att justera text.
Exempel:
Koda | Konsolutgång |
---|---|
|
|
\b
betyder "gå tillbaka en karaktär"
Denna sekvens i en sträng motsvarar att trycka på Backspace
tangenten på tangentbordet. Det tar bort tecknet som föregår det:
Koda | Konsolutgång |
---|---|
|
|
\r
är vagnreturtecknet
Detta tecken flyttar markören till början av den aktuella raden utan att ändra texten. Vad som än visas härnäst kommer att skriva över den befintliga strängen.
Exempel:
Koda | Konsolutgång |
---|---|
|
|
\f
är ett sidflödestecken
Denna symbol kommer ner till oss från de första matrisskrivarnas dagar. Att mata ut denna sekvens till en skrivare skulle få skrivaren att helt enkelt mata ut det aktuella arket, utan att skriva ut någon text, tills en ny sida börjar.
Nu skulle vi kalla det en sidbrytning eller ny sida .
\\
är ett snedstreck
Allt är okomplicerat här. Om vi använder ett omvänt snedstreck för att undvika tecken i vår text, hur skriver vi då ett omvänt snedstreck i strängen?
Det är enkelt: lägg till ett snedstreck i texten — du måste skriva två i rad.
Exempel:
Koda | Konsolutgång |
---|---|
|
Kompilatorn kommer att skrika åt dig efter okända förrymda karaktärer. |
|
Det är så det görs rätt! |
4. Unicode-kodning
Som du redan vet motsvarar varje tecken som visas på skärmen en specifik sifferkod. En standardiserad uppsättning av dessa koder kallas för encoding .
En gång i tiden, när datorer nyligen uppfanns, räckte sju bitar (mindre än en byte) för att koda varje tecken. Den första kodningen innehöll endast 128 tecken. Denna kodning kallades ASCII .
ASCII står för American Standard Code for Information Interchange — en amerikansk standardkodtabell för utskrivbara tecken och vissa specialkoder.
Den består av 33 icke-utskrivbara kontrolltecken (som påverkar hur text och mellanslag bearbetas) och 95 utskrivbara tecken, inklusive siffror, versaler och gemener latinska bokstäver och flera skiljetecken.
När datorer växte i popularitet började varje land släppa sin egen kodning. Vanligtvis tog de ASCII som utgångspunkt och ersatte sällan använda ASCII-tecken med symboler från deras respektive alfabet.
Med tiden dök en idé upp: skapa en enda kodning som innehåller alla tecken från varje kodning i världen.
Således skapades Unicode- kodningen 1993, och Java-språket blev det första programmeringsspråket som använde denna kodning som standard för att lagra text. Nu är Unicode standarden för hela IT-branschen.
Även om Unicode i sig är standarden, har den flera representationer eller Unicode-transformationsformat (UTF): UTF-8, UTF-16 och UTF-32, etc.
Java använder en avancerad version av Unicode-kodning — UTF-16: varje tecken kodas i 16 bitar (2 byte). Den kan rymma upp till 65 536 tecken!
Du kan hitta nästan alla tecken i alla alfabet i världen i denna kodning. Naturligtvis har ingen det hela memorerat. Man kan inte veta allt, men man kan googla på allt.
För att skriva ett Unicode-tecken i ditt program med dess kod måste du skriva \u
+ koden i hexadecimal . Till exempel,\u00A9
Koda | Konsolutgång |
---|---|
|
|
5. Unicode: kodpunkt
"640 kilobyte borde räcka för alla! Eller inte". (Citat tillskrivet Bill Gates)
Livet är grovt, och med tiden började UTF-16-kodningen vara otillräcklig. Det visar sig att det finns många asiatiska språk, och de har många glyfer. Och alla dessa glyfer kan helt enkelt inte stoppas i 2 byte.
Vad kan göras? Använd fler byte !
Men char-typen är bara 2 byte och att ändra den till 4 är inte så lätt: miljarder rader Java-kod har skrivits över hela världen, vilket skulle gå sönder om char-typen plötsligt blir 4 byte en Java-maskin. Så vi kan inte ändra rödingstypen!
Det finns ett annat tillvägagångssätt. Kom ihåg hur vi undkommer karaktärer genom att sätta ett snedstreck framför dem. I grund och botten kodade vi ett enda tecken med flera tecken.
Javas skapare bestämde sig för att använda samma tillvägagångssätt.
Vissa tecken som visuellt visas som ett enda tecken är kodade som två char
s i en sträng:
Koda | Konsolutgång |
---|---|
|
|
Nu kan ditt Java-program till och med mata ut emojis till konsolen 😎
GO TO FULL VERSION