1. A karakterek elkerülésének okai
Egyszer régen megtanultad, hogy ahhoz, hogy egy karaktersorozatot kódban írhass, idézőjelbe kell tenni őket. Az eredmény egy karakterlánc literál .
De mit tegyünk, ha egy karakterlánc-literálon belül idézőjelekre van szükségünk? Egy idézőjeleket tartalmazó karakterlánc – mi lehetne könnyebb?
Tegyük fel, hogy meg akarjuk jeleníteni a szöveget "Friends" was nominated for an "Oscar"
. Hogyan csinálod, hogy?
Kód | Megjegyzések |
---|---|
|
Ez az opció nem fog működni! |
A probléma az, hogy a fordító úgy gondolja, hogy teljesen váratlan kódot írsz:
Kód | Megjegyzések |
---|---|
|
Ez az opció 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ő dupla idézőjel a string literál végét jelzi.
Tehát hogyan írhat dupla idézőjeleket a literálba?
2. Menekülő karakterek
Van rá mód. Ezt menekülő karaktereknek hívják . Csak írja be az idézőjeleket 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 |
---|---|
|
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 kiadja a képernyőre, akkor a fordított perjelekkel ellátott idézetek helyesen lesznek feldolgozva, és a szöveg fordított perjel nélkül jelenik meg:"Friends" was nominated for an "Oscar"
Egy másik fontos szempont. A fordított perjel előtti idézőjel egyetlen karaktert jelöl: egyszerűen olyan sima jelölést használunk, amely nem zavarja a fordító azon képességét, hogy felismerje a karakterlánc-literálokat a kódunkban. Egy változóhoz idézőjeleket rendelhet char
:
Kód | Megjegyzések |
---|---|
|
\" egy karakter, nem kettő |
|
Ez is lehetséges: dupla idézőjel az idézőjelben |
3. Gyakori helyzetek, amelyek karakterek menekülésekor fordulnak elő
A dupla idézőjeleken kívül sok más karakter is található, amelyeket a fordító speciális módon kezel. Például egy sortörés.
Hogyan adjunk sortörést a literálhoz? Erre is van egy speciális kombináció:
\n
Ha sortörést kell hozzáadnia egy string literálhoz, csak néhány karaktert kell hozzáadnia: \n
.
Példa:
Kód | Konzol kimenet |
---|---|
|
|
Ö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 |
Kettőt ismersz, de mit jelent a másik 6?
\t
egy tabulátor karakter
Ha ez a szöveg megjelenik a szövegben, az egyenértékű a Tab
billentyű 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 |
---|---|
|
|
\b
azt jelenti, hogy "egy karakterrel visszafelé"
Ez a sorozat egy karakterláncban megegyezik Backspace
a billentyűzet billentyűjének megnyomásával. Eltávolítja az előtte lévő karaktert:
Kód | Konzol kimenet |
---|---|
|
|
\r
a kocsivissza karakter
Ez a karakter a szöveg megváltoztatása nélkül mozgatja a kurzort az aktuális sor elejére. Bármi is látható ezután, felülírja a meglévő karakterláncot.
Példa:
Kód | Konzol kimenet |
---|---|
|
|
\f
egy oldalfeed karakter
Ez a szimbólum az első mátrixnyomtatók idejéből származik. Ha ezt a sorozatot kiadja a nyomtatóra, 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.
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 |
---|---|
|
A fordító kiabálni fog neked ismeretlen, szökött karakterekért. |
|
Így van ez jól megcsinálva! |
4. Unicode kódolás
Mint már tudja, a képernyőn megjelenő minden karakter egy adott számkó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 .
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 (amelyek a szöveg és a szóközök feldolgozását befolyásolják) és 95 nyomtatható karakterből áll, beleértve a számokat, a kis- és nagybetűket, valamint számos írásjelet.
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.
Így 1993-ban létrehozták az Unicode kódolást, é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 az Unicode a szabvány az egész IT-ipar számára.
Bár maga az Unicode a szabvány, számos ábrázolása vagy Unicode transzformációs formátuma (UTF) van: UTF-8, UTF-16 és UTF-32 stb.
A Java a Unicode kódolás fejlett verzióját használja – UTF-16: minden karakter 16 bites (2 bájt) kódolású. Legfeljebb 65 536 karakter fér el benne!
Ebben a kódolásban a világ összes ábécéjének szinte minden karaktere megtalálható. Természetesen senki sem jegyezte meg az egészet. Nem tudhatsz mindent, de a google-ban mindent tudsz.
Ha Unicode karaktert szeretne írni a programjába a kódjával, akkor \u
+ a kódot hexadecimálisan kell írnia . Például,\u00A9
Kód | Konzol kimenet |
---|---|
|
|
5. Unicode: kódpont
"640 kilobájtnak mindenkinek elégnek kell lennie! Vagy nem." (Idézet Bill Gatesnek tulajdonítva)
Az élet durva, és idővel az UTF-16 kódolás kezdett nem megfelelő. Kiderült, hogy nagyon sok ázsiai nyelv létezik, és sok karakterjelük van. És mindezek a jelek egyszerűen nem zsúfolhatók 2 bájtba.
Mit lehet tenni? Használj több bájtot !
De a char típus csak 2 bájtos, és 4-re cserélni nem is olyan egyszerű: Java kódsorok milliárdjait írtak már szerte a világon, ami eltörne, ha a char típusból hirtelen 4 bájtos Java gép lesz. Tehát a karakter típusát nem tudjuk megváltoztatni!
Van egy másik megközelítés is. Ne feledje, hogyan menekülhetünk meg a karakterek elől úgy, hogy egy 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 ugyanezt a megközelítést választották.
Egyes karakterek, amelyek vizuálisan egyetlen karakterként jelennek meg, két char
s-ként vannak kódolva egy karakterláncban:
Kód | Konzol kimenet |
---|---|
|
|
Mostantól a Java program akár hangulatjeleket is kiadhat a konzolra 😎
GO TO FULL VERSION