Ett föreläsningsutdrag med en mentor som en del av Codegym University-kursen. Anmäl dig till hela kursen.


"Hälsningar, Amigo. 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."

"Ja, och det ger oss en sträng bokstavligen . Det var inte särskilt länge sedan jag fick reda på det här."

"I vårt yrke var det länge sedan. Men det är inte meningen just nu. Säg i stället vad jag ska göra om vi behöver citattecken i en bokstavlig sträng?"

"Hmm... En sträng som innehåller citat - vad kan vara lättare. Jag är säker på att det finns något sätt..."

"Ja. Låt oss säga att vi vill visa texten. "Friends" was nominated for an "Oscar"Hur skulle vi göra det?"

"För att vara ärlig har jag ingen aning. Jag kan inte komma på någonting."

"Du kommer inte att kunna komma till en lösning genom logik. Låt mig bara visa dig vad du ska göra.

Koda Anteckningar
String s = ""Friends" was nominated for an "Oscar"";
Det här alternativet kommer inte att fungera!"

"Det här alternativet kommer inte att fungera, eftersom kompilatorn tolkar detta som en helt annan kod:

Koda Anteckningar
String s = ""Friends" was nominated for an "Oscar"";
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 indikerar slutet på den bokstavliga strängen."

"Så hur skriver man dubbla citattecken i en bokstavlig?"

"Det finns ett sätt. Det kallas escape-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
String s = "\"Friends\" was nominated for an \"Oscar\"";
Det här 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"

"Tja, jag tänker inte säga att det här är superbekvämt..."

"Men vad kan du göra, det är reglerna. 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 charvariabel:

Koda Anteckningar
char c = '\"';
\"är ett tecken, inte två
char c = '"';
Detta är också möjligt: ​​ett dubbelt citattecken inom enkla citattecken

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
Radbrytningskaraktär

"Om du behöver lägga till en radbrytning i en bokstavssträng lägger du bara till ett par tecken" \n.

Exempel:

Koda Konsolutgång
System.out.println("Best regards, \n Anonymous");
Best regards,
Anonymous

"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 har redan visat mig två av dem. Vad betyder de andra sex?"

"Jag ska förklara allt nu.

\tär ett tabbtecken

När den här texten visas i text motsvarar det att trycka på Tabknappen medan du skriver. Den förskjuter texten som följer den och gör det möjligt att justera text.

Exempel:

Koda Konsolutgång
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å tillbaka en karaktär"

Denna sekvens i en sträng motsvarar att trycka på Backspacetangenten på tangentbordet. Det tar bort tecknet som föregår det:

Koda Konsolutgång
System.out.println("Hello\b\b World");
Hel World

\rär vagnreturtecknet

Detta tecken flyttar markören till början av den aktuella raden utan att ändra texten (beror på JDK-versionen). Vad som än visas härnäst kommer att skriva över den befintliga strängen.

Exempel:

Koda Konsolutgång
System.out.println("Greetings\r World!");
World!ngs

\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
System.out.println("c:\projects\my\first");
Kompilatorn kommer att skrika åt dig efter okända förrymda karaktärer.
System.out.println("c:\\projects\\my\\first");
Det är så det görs rätt!

"Att använda dubbla snedstreck är vettigt. Men jag har inte direkt kunnat memorera allt annat. Jag får lita på dina tips."

"Småningom kommer du ihåg vad du behöver. Oroa dig inte. Och för allt annat finns Google.

Unicode-kodning

"Du vet redan att varje tecken som visas på skärmen motsvarar en specifik numerisk kod. En standardiserad uppsättning av dessa koder kallas en kodning .

"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 bara 128 tecken. Denna kodning kallades ASCII . "

"Det är ett konstigt namn."

"Det är inget konstigt med det. Det är en förkortning. ASCII står för American Standard Code for Information Interchange — en amerikansk standardkodtabell för utskrivbara tecken och några specialkoder."

"Den består av 33 icke-utskrivbara kontrolltecken (som påverkar hur text och mellanslag behandlas) och 95 utskrivbara tecken, inklusive siffror, versaler och gemener latinska bokstäver och flera skiljetecken.

"I takt med att 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 sina 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.

Unicode-kodning

"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 är kodat i 16 bitar (2 byte). Det kan rymma upp till 65 536 tecken! Du kan hitta nästan alla tecken i alla alfabet i världen i denna kodning. "

"Jag hoppas att jag inte behöver kunna det utantill?"

"Om du vill, gör det!"

"Okej, okej. Jag använder den här regeln: du kan inte veta allt, men du kan Googla allt."

"Att anta ett rationellt tillvägagångssätt är allt. Så 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
System.out.println("\u00A9 CodeGym");
© CodeGym

Unicode: kodpunkt

"640 kilobyte borde räcka till alla! Eller inte". Bill Gates sa det en gång. Eller inte. Åtminstone tillskrivs detta citat honom."

"Haha. 640 kilobyte räcker inte ens för att ladda en städrobots hjärna."

"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 ."

"Så vad gör vi?"

"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, som 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 tecken 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å chars i en sträng:

Koda Konsolutgång
System.out.println("\uD83D\uDD0A");
🔊

"Nu kan ditt Java-program även mata ut emojis till konsolen 😎"

"Jag kommer definitivt att använda det för att ha lite kul!"