string osztályból

a fordító fog tenni valamit, mint ez:

S karakterlánc = új StringBuffer (). Hozzáfűzése ( "Ez a"). Hozzáfűzése ( "a")

osztályba tartozó objektum StringBuffer vagy StringBuilder osztályból. ez „hogy” lesz hozzá egymás után sorba append (). „Egy”. "String". és a kapott objektumot StringBuffer vagy StringBuilder osztály kap a String meto-

Emlékezzünk vissza, hogy a karakterek húrok vannak tárolva Unicode, ahol minden egyes karakter foglal két bájt. A típus minden karakter - char.

A munka megkezdése előtt a húr kell létrehozni, mint egy tárgy minden osztályban. Ezt meg lehet tenni a különböző módon.

Hogyan hozzunk létre egy húr

A legegyszerűbb módja annak, hogy hozzon létre egy húr - hogy szervezzen egy karakterlánc hivatkozás a húr-állandó:

String s1 = "Ez egy string.";

String s2 = „Ez hosszú sora String,” + „írt két sornyi forráskódot”;

Ne felejtsük el, mi a különbség egy üres string string s = „”. nem tartalmaz semmilyen karakter, és az üres karakterlánc referencia s = null. Nem mutat semmilyen vonal, és nem egy tárgy.

A legtöbb helyes módja annak, hogy egy tárgy szemszögéből a PFSZ - az, hogy hívja a kivitelező működését az új. A String osztály biztosítja az Ön számára több mint egy tucat tervezők:

 String () - létrehoz egy objektumot egy üres string;

 String (karakterlánc str) - a másolat kivitelező: az egyik objektum által teremtett a

pontos másolata, így a tervező ritkán használják;

 String (StringBuffer str) - kiadatás StringBuffer osztály objektum;

 String (StringBuilder str) - kiadatás StringBuilder osztály objektum;

 String (byte [] ByteArray) - az objektum létre egy sor bájt ByteArray;

 String (char [] charArray) - létrejön az objektum egy tömb charArray Unicode karakterek;

 String (byte [] ByteArray, int offset, int count) - létrejön az objektum egy része tömbök

va ByteArray bájt. indexszámmal kezdődő ofszet és bájtszám tartalmaz;

 String (char [] charArray, int offset, int count) - ugyanaz, de tartalmaz egy tömb A szimbólum

 String (int [] intArray, int offset, int count) - az azonos, de magában foglalja egy sor karakterek

Unicode, tömb tárolja olyan típusú, amely lehetővé teszi, hogy a Unicode karakterek elfoglalni több mint két bájt;

 String (byte [] ByteArray, karakterlánc kódolás) - szimbólumok rögzített egy sor bájt,

beállítva a Unicode-alapú kódolás vonal kódolás;

 String (byte [] ByteArray, int offset, int száma, karakterlánc kódolás) - ugyanaz, de a

csak egy része a tömbben;

 String (byte [] ByteArray, Charset charset) - szimbólumok rögzített egy sor bájt,

Unicode összhangban meghatározott kódolási adott objektum karakterkészlet;

 String (byte [] ByteArray, int offset, int száma, Charset charset) - ugyanaz, de a

csak egy része a tömbben.

A rossz munkát eltolás indexek. szám, illetve a kódolás kódoló kivétel történik.

Kitek felhasználásával ByteArray tömb bájt. célja, hogy hozzon létre Unicode-string tömb byte ASCII-karakterkódolás. Ez a helyzet akkor fordul elő, amikor olvas ASCII-fájl információ kinyerése az adatbázisból vagy az információ továbbítása a hálózaton keresztül.

A legegyszerűbb esetben, a fordító kétbájtos Unicode karakterek felvenni minden byte vezető null bájt. Szerezd meg a tartomány '\ u0000' - '\ u00FF' Unicode kódolás megfelelő kódokat Latin1. Írott szövegek cirill megfelelően jelennek meg.

Ha a számítógép, hogy egy helyi telepítés, mint mondják a zsargonban a „helyileg telepített” (locale) (az MS Windows alatt fut a közüzemi területi beállítások (Regional Settings) a Control Panel (Vezérlőpult)), a fordító fogja olvasni ezeket a beállításokat, létre Unicode karakter megfelel a helyi kódlapot. A eloroszosodott változata MS Windows általában kódlap CP1251.

Ha az eredeti tömb az ASCII-cirill szöveget kódolt CP1251, a Java string jön létre megfelelően. Cirill esnek azok köre '\ u0400' - '\ u04FF' Unicode kódolást.

De cirill van legalább négy kódolások:

 MS-DOS használunk CP866 kódolás;

 tipikusan használt UNIX kódoló KOI8-R;

 Apple Macintosh számítógépeken használt kódolási MacCyrillic;

 van még egy nemzetközi kódolási cirill ISO8859-5.

Például, a byte 11100011 (0xE3 - hexadecimális) a CP1251 kódolás cirill betű G. kódolt CP866 - a levél y. kódolt KOI8- R - levél Ts ISO8859-5 - levele. A MacCyrillic - levél g.

Ha az eredeti cirill ASCII-volt az egyik ilyen karakterkészletek, és a helyi kódolás - CP1251, a Unicode-karakter Java string nem egyeznek meg a cirill ábécét.

Ezekben az esetekben az utóbbi négy konstruktőri alkalmazunk, amelyekben az encoding paraméter vagy charset meghatározza, hogy melyik charset használni a tervezők, hogy megteremtse a sorban.

System.out.print (MSG + "Cp1251:"); System.out.write (byteCp1251); System.out.println (); System.out.print (MSG + "Cp866."); System.out.write (byteCp866); System.out.println (); System.out.print (MSG + "KOI8-R:"); System.out.write (byteKOI8R);

> Fogás (Kivétel e)

System.out.println (MSG + "char tömb." + S1); System.out.println (msg + "alapértelmezett kódolása:" + s2); System.out.println (MSG + "szöveg konstans." + S3); System.out.println ();

System.out.println (MSG + "Cp1251 -> Cp1251:" + winLikeWin); System.out.println (MSG + "Cp1251 -> Cp866." + WinLikeDOS); System.out.println (MSG + "Cp1251 -> KOI8-R:" + winLikeUNIX); System.out.println (MSG + "Cp866 -> Cp1251:" + dosLikeWin); System.out.println (MSG + "Cp866 -> Cp866." + DosLikeDOS); System.out.println (MSG + "Cp866 -> KOI8-R:" + dosLikeUNIX); System.out.println (MSG + "KOI8-R -> Cp1251:" + unixLikeWin); System.out.println (MSG + "KOI8-R -> Cp866." + UnixLikeDOS); System.out.println (MSG + "KOI8-R -> KOI8-R:" + unixLikeUNIX);

Az első három sor a konzol konverzió nélkül byte tömböt jelennek Unicode

byteCp1251. byteCp866 és byteKOI8R. Ezt úgy érjük el write () osztály FilterOutputStream csomag java.io.

A következő három sor származó Java konzol származó vonal a karakter tömb C []. byteCp866 tömb és sztring konstansok.

További a sorokban a konvertált konzol tömbök.

Láthatjuk, hogy a konzol helyesen jelenik meg csak tömb CP866 kódolás, rögzített egy string a CP1251 kód táblázat. Mi a baj? Itt hozzájárulásuk az oroszosítást a probléma miatt a következtetésre szimbólum áramot a konzolon vagy egy fájlba.

Amint az 1. fejezetben említettük, a konzolt parancssor MS Windows operációs szöveg kódolva CP866 rendszerekben.

Annak érdekében, hogy ezt a „” Oroszország „a” átalakítható egy byte tömböt tartalmazó karakterek CP866 kódolást, majd át a msg húr.

Az utolsó előtti sorban ábra. 5.1 done átirányítás programot codes.txt fájlt. Az MS Windows szöveges kimenetet egy fájlba történik a kódolás CP1251. Ábra. 5.2 tartalmát mutatja a fájlt a Jegyzettömb codes.txt ablak (Notepad).

Ábra. 5.2. Következtetés cirill szöveg fájlba

Mint látható, a cirill néz ki egészen más. Helyes karakterek Unicode Cirill elő ugyanazt a kód táblázat, amely az eredeti tömb írt bájtok.

Oroszosodás kérdéseket tárgyalni fogjuk fejezetében a 9. és 24. Eközben vegye figyelembe, hogy ha egy sztring a byte tömb jobb adja meg ugyanazt a cirill karakterkészlet, amely rögzíti a tömbben. Ezután kapsz egy Java string a megfelelő Unicode karaktereket.

A levezetés az azonos karaktersorozat a konzolt, egy fájl vagy hálózaton továbbított jobb konvertálni a Java string a Unicode karaktereket következtetési szabályok a megfelelő helyre.

Egy másik módja, hogy hozzon létre egy húr - használata két statikus módszerek:

Kapcsolódó cikkek