Как создать строку. Сцепление строк.
Листинг 5.1 показывает различные случаи записи кириллического текста. В нем создаются три массива байто'в, содержащих слово "Россия" в трех кодировках.
- Массив byteCP1251 содержит слово "Россия" в кодировке СР1251.
- Массив byteСP866 содержит слово "Россия" в кодировке СР866.
- Массив byteKOI8R содержит слово "Россия" в кодировке KOI8-R.
Из каждого массива создаются по три строки с использованием трех кодовых таблиц.
Кроме того, из массива символов с[] создается строка s1, из массива бай-тов, записанного в кодировке СР866, создается строка s2. Наконец, создается ссылка зз на строку-константу.
Листинг 5.1. Создание кириллических строк.
class StringTest{ public static void main(String[] args){ String winLikeWin = null, winLikeDOS = null, winLikeUNIX = null; String dosLikeWin = null, dosLikeDOS = null, dosLikeUNIX = null; String unixLikeWin = null, unixLikeDOS = null, unixLikeUNIX = null; String msg = null; byte[] byteCp!251 = { (byte)0xD0, (byte)0xEE, (byte)0xFl, (byte)0xFl, (byte)0xES, (byte)0xFF }; byte[] byteCp866 = { (byte)0x90, (byte)0xAE, (byte)0xE1, (byte)0xEl, (byte)0xA8, (byte)0xEF }; byte[] byteKOISR = ( (byte)0xF2, (byte)0xCF, (byte)0xD3, (byte)0xD3, (byte)0xC9, (byte)0xDl }; char[] с = {'Р', 'о', 'с', 'с', 'и', 'я'}; String s1 = new String(c); String s2 = new String(byteCp866); // Для консоли MS Windows String s3 = "Россия"; System.out.println(); try{ // Сообщение в Cp866 для вывода на консоль MS Windows. msg = new String("\"Россия\" в ".getBytes("Ср866"), "Cpl251"); winLikeWin = new String(byteCp1251, "Cpl251"); //Правильно winLikeDOS = new String(byteCpl251,: "Cp866"); winLikeUNIX – new String(byteCp1251, "KOI8-R"); dosLikeWin = new String(byteCp866, "Cpl251"); // Для консоли dosLikeDOS = new String(byteCp866, "Cp866"); // Правильно dosLikeUNIX = new String(byteCp866, "KOI8-R"); unixLikeWin = new String(byteKOISR, "Cpl251"); unixLikeDOS = new String(byteKOISR, "Cp866"); unixLikeUNIX = new String(byteKOISR, "KOI8-R"); // Правильно System.out.print(msg + "Cpl251: "); 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); {catch(Exception e)( e.printStackTrace(); } System.out.println(); System.out.println(); System.out.println(msg + "char array: " + s1); System.out.println(msg + "default encoding: " + s2); System.out.println(msg + "string constant: " + 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 › Cpl251: " + unixLikeWin); System.out.println(msg + "KOI8-R › Cp866: " + unixLikeDOS); System.out.println(msg + "KOI8-R › KOI8-R: " + unixLikeUNIX); } }