Előadásrészlet egy mentorral a Codegym University tanfolyam részeként. Jelentkezzen a teljes tanfolyamra.


"Üdvözlöm, Amigo. Egyszer régen megtanultad, hogy egy karaktersorozat kódba írásához dupla idézőjelbe kell őket tenni."

"Igen, és ez egy karakterláncot ad nekünk . Nem olyan régen tudtam meg erről."

"A mi szakmánkban ez nagyon régen volt. De most nem ez a lényeg. Ehelyett kérem, mondja meg, mit tegyek, ha egy karakterlánc-literálon belül idézőjelekre van szükség?"

"Hmm... Egy idézőjeleket tartalmazó karakterlánc – mi lehetne egyszerűbb. Biztos vagyok benne, hogy van valami mód..."

"Igen. Tegyük fel, hogy meg akarjuk jeleníteni a szöveget "Friends" was nominated for an "Oscar". Hogyan csinálnánk?"

"Őszintén szólva fogalmam sincs. Nem jut eszembe semmi."

"Nem fogsz tudni megoldást találni a logikán keresztül. Hadd mutassam meg, mit kell tenned.

Kód Megjegyzések
String s = ""Friends" was nominated for an "Oscar"";
Ez a lehetőség nem fog működni!"

"Ez az opció nem fog működni, mert a fordító ezt teljesen más kódként értelmezi:

Kód Megjegyzések
String s = ""Friends" was nominated for an "Oscar"";
Ez a lehetőség nem fog működni!"

"Miután a fordító kettős idézőjelekkel találkozik a kódban, a következőt egy karakterlánc-literál kezdeteként kezeli. A következő kettős idézőjel a karakterlánc-literál végét jelzi."

"Szóval hogyan írhat dupla idézőjeleket egy literálba?"

"Van egy mód. Ezt menekülő karaktereknek hívják . Csak az idézőjeleket kell beírni a szövegbe. Az idézőjelek elé pedig hozzáadja a \ ( fordított perjel ) szimbólumot.

"Így néz ki a karakterlánc-literál helyesen írva:

Kód Megjegyzések
String s = "\"Friends\" was nominated for an \"Oscar\"";
Ez menni fog!

"A fordító mindent helyesen értelmez, és a fordított perjel utáni idézőjelet nem tekinti normál idézőjelnek.

"Sőt, ha ezt a karakterláncot kiírod a képernyőre, akkor a fordított perjelekkel ellátott idézetek megfelelően lesznek feldolgozva, és a szöveg fordított perjel nélkül jelenik meg:"Friends" was nominated for an "Oscar"

"Nos, nem mondom, hogy ez szuper kényelmes..."

"De mit tehetsz, ezek a szabályok. Egy másik fontos pont. A fordított perjel előtti idézőjel egyetlen karaktert jelöl: egyszerűen olyan sima jelöléseket használunk, amelyek nem akadályozzák a fordító azon képességét, hogy felismerje a karakterlánc-literálokat. Egy változóhoz idézőjeleket rendelhet char:

Kód Megjegyzések
char c = '\"';
\"egy karakter, nem kettő
char c = '"';
Ez is lehetséges: dupla idézőjel az idézőjelben

Gyakori helyzetek, amelyek karakterek menekülésekor fordulnak elő

"A dupla idézőjeleken kívül sok más karakter is van, amelyeket a fordító speciális módon kezel. Például egy sortörés.

"Hogyan adjunk sortörést a literálhoz? Van erre egy speciális kombináció is:

\n
Sortörés karakter

"Ha sortörést kell hozzáadnia egy karakterlánc literálhoz, csak adjon hozzá néhány karaktert \n. "

Példa:

Kód Konzol kimenet
System.out.println("Best regards, \n Anonymous");
Best regards,
Anonymous

"Összesen 8 ilyen speciális kombináció létezik, amelyeket escape szekvenciáknak is neveznek . Itt vannak:

Kód Leírás
\t Tabulátor karakter beszúrása
\b Szúrjon be egy backspace karaktert
\n Újsor karakter beszúrása
\r Szúrjon be egy kocsivissza karaktert
\f Szúrjon be egy oldalfeed karaktert
\' Tegyen be egyetlen idézőjelet
\" Tegyen be dupla idézőjelet
\\ Szúrjon be egy fordított perjelet

"Már kettőt mutattál belőlük. Mit jelent a másik 6?"

– Mindjárt elmagyarázom.

\tegy tabulátor karakter

Ha ez a szöveg megjelenik a szövegben, az egyenértékű a Tabbillentyű lenyomásával gépelés közben. Eltolja az utána következő szöveget, és lehetővé teszi a szöveg igazítását.

Példa:

Kód Konzol kimenet
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

\bazt jelenti, hogy "egy karakterrel visszafelé"

Ez a sorozat egy karakterláncban megegyezik Backspacea billentyűzet billentyűjének megnyomásával. Eltávolítja az előtte lévő karaktert:

Kód Konzol kimenet
System.out.println("Hello\b\b World");
Hel World

\ra kocsivissza karakter

Ez a karakter a szöveg megváltoztatása nélkül mozgatja a kurzort az aktuális sor elejére (a JDK verziójától függően). Bármi is látható ezután, felülírja a meglévő karakterláncot.

Példa:

Kód Konzol kimenet
System.out.println("Greetings\r World!");
World!ngs

\fegy oldalfeed karakter

Ez a szimbólum az első mátrixnyomtatók idejéből származik. Ennek a sorozatnak a nyomtatóra való kiadása azt eredményezi, hogy a nyomtató egyszerűen kiadja az aktuális lapot, anélkül, hogy bármilyen szöveget nyomtatna, amíg egy új oldal el nem kezdődik.

Most oldaltörésnek vagy új oldalnak neveznénk .

\\egy fordított perjel

Itt minden egyértelmű. Ha fordított törtvonalat használunk a karakterek kikerülésére a szövegben, akkor hogyan írjuk be magát a fordított perjelet a karakterláncba?

Egyszerű: adj hozzá egy fordított perjelet a szöveghez – kettőt kell egymás után írnod.

Példa:

Kód Konzol kimenet
System.out.println("c:\projects\my\first");
A fordító kiabálni fog neked ismeretlen, szökött karakterekért.
System.out.println("c:\\projects\\my\\first");
Így van ez jól megcsinálva!

"A dupla perjel használatának van értelme. De nem tudtam azonnal megjegyezni minden mást. A tippjeidre kell hagyatkoznom."

"Fokozatosan emlékezni fog, mire van szüksége. Ne aggódjon. Minden másra pedig ott van a Google.

Unicode kódolás

"Már tudja, hogy a képernyőn megjelenő minden karakter egy adott numerikus kódnak felel meg. Ezeknek a kódoknak a szabványosított halmazát kódolásnak nevezzük .

"Egyszer régen, amikor a számítógépeket újonnan feltalálták, hét bit (egy bájtnál kevesebb) elég volt minden karakter kódolásához. Az első kódolás mindössze 128 karaktert tartalmazott. Ezt a kódolást ASCII-nek hívták . "

– Furcsa név.

"Nincs ebben semmi különös. Ez egy rövidítés. Az ASCII az American Standard Code for Information Interchange rövidítése – egy szabványos amerikai kódtábla nyomtatható karakterekhez és néhány speciális kódhoz."

"33 nem nyomtatható vezérlőkarakterből áll (amelyek befolyásolják a szöveg és a szóközök feldolgozását) és 95 nyomtatható karakterből, köztük számokból, kis- és nagybetűkből, valamint számos írásjelből.

"A számítógépek népszerűségének növekedésével minden ország elkezdte kiadni saját kódolását. Általában az ASCII-t vették kiindulópontnak, és a ritkán használt ASCII-karaktereket a megfelelő ábécéjükből származó szimbólumokkal helyettesítették.

"Idővel felmerült egy ötlet: hozzon létre egyetlen kódolást, amely tartalmazza a világ összes kódolásának összes karakterét.

Unicode kódolás

"Így 1993-ban megszületett az Unicode kódolás, és a Java nyelv lett az első olyan programozási nyelv, amely ezt a kódolást használta szabványként a szöveg tárolására. Most a Unicode a szabvány az egész IT-ipar számára.

"Bár maga az Unicode a szabvány, számos reprezentációja vagy Unicode transzformációs formátuma (UTF) van: UTF-8, UTF-16 és UTF-32 stb.

"A Java a Unicode kódolás továbbfejlesztett változatát használja – UTF-16: minden karakter 16 bitben (2 bájtban) van kódolva. Akár 65 536 karaktert is tud befogadni! Ebben a kódolásban a világ összes ábécéjének szinte minden karaktere megtalálható. "

– Remélem, nem kell fejből tudnom?

– Ha akarod, hajrá!

"Rendben, rendben. Én ezt a szabályt fogom használni: nem tudhatsz mindent, de a Google-on mindent megtehetsz."

"A racionális megközelítés elfogadása minden. Tehát ahhoz, hogy egy Unicode karaktert írjon a programjába a kódjával, a \u+ kódot hexadecimálisan kell írnia . Például:\u00A9

Kód Konzol kimenet
System.out.println("\u00A9 CodeGym");
© CodeGym

Unicode: kódpont

"640 kilobájtnak mindenkinek elégnek kell lennie! Vagy nem." Bill Gates egyszer ezt mondta. Vagy nem. Ezt az idézetet legalábbis neki tulajdonítják."

"Haha. 640 kilobájt még egy takarítórobot agyának betöltéséhez sem elég."

"Az élet durva, és az idő múlásával az UTF-16 kódolás kezdett nem megfelelő ."

"Szóval mit csináljunk?"

"Használj több bájtot ! De a char típus csak 2 bájt, és 4-re cserélni nem olyan egyszerű: több milliárd sor Java kódot írtak a világ minden táján, ami eltörne, ha a char típus hirtelen 4 bájtos Java lesz. gépet.A char típusát tehát nem tudjuk megváltoztatni!

"Van egy másik megközelítés is. Emlékezzen arra, hogyan menekülhetünk el a karakterektől úgy, hogy fordított perjelet teszünk eléjük. Alapvetően egyetlen karaktert kódoltunk több karakter használatával. A Java készítői úgy döntöttek, hogy ugyanezt a megközelítést használják.

"Néhány karakter, amely vizuálisan egyetlen karakterként jelenik meg, két chars-ként van kódolva egy karakterláncban:

Kód Konzol kimenet
System.out.println("\uD83D\uDD0A");
🔊

"Most a Java programod akár hangulatjeleket is kiadhat a konzolra 😎"

– Biztosan fel fogom használni a szórakozásra!