Иллюстрированный самоучитель по Java

Как создать строку. Сцепление строк.

Самый простой способ создать строку – это организовать ссылку типа string на строку-константу:

String si = "Это строка.";

Если константа длинная, можно записать ее в нескольких строках текстового редактора, связывая их операцией сцепления:

String s2 = "Это длинная строка, " +
"записанная в двух строках исходного текста";

Замечание
Не забывайте разницу между пустой строкой string s = "", не содержащей ни одного символа, и пустой ссылкой string s = null, не указывающей ни на какую строку и не являющейся объектом
.

Самый правильный способ создать объект с точки зрения ООП – это вызвать его конструктор в операции new. Класс string предоставляет вам девять конструкторов:

  • string() – создается объект с пустой строкой;
  • string (String str) – из одного объекта создается другой, поэтому этот конструктор используется редко;
  • string (StringBuffer str) – преобразованная коп-ия объекта класса BufferString;
  • string(byte[] byteArray) – объект создается из массива байтов byteArray;
  • String (char [] charArray) – объект создается из массива charArray символов Unicode;
  • String (byte [] byteArray, int offset, int count) – объект создается из части массива байтов byteArray, начинающейся с индекса offset и содержащей count байтов;
  • String (char [] charArray, int offset, int count) – то же, но массив состоит из символов Unicode;
  • String(byte[] byteArray, String encoding) – символы, записанные в массиве байтов, задаются в Unicode-строке, с учетом кодировки encoding;
  • String(byte[] byteArray, int offset, int count, String encoding) – то же самое, но только для части массива.

При неправильном заданий индексов offset, count или кодировки encoding возникает исключительная ситуация.

Конструкторы, использующие массив байтов byteArray, предназначены для создания Unicode-строки из массива байтовых ASCII-кодировок символов. Такая ситуация возникает при чтении ASCII-файлов, извлечении информации из базы данных или при передаче информации по сети.

В самом простом случае компилятор для получения двухбайтовых символов Unicode добавит к каждому байту старший нулевой байт. Получится диапазон ' \u0000 ' – ' \u00ff ' кодировки Unicode, соответствующий кодам Latin 1. Тексты на кириллице будут выведены неправильно.

Если же на компьютере сделаны местные установки, как говорят на жаргоне "установлена локаль" (locale) (в MS Windows это выполняется утилитой Regional Options в окне Control Panel), то компилятор, прочитав эти установки, создаст символы Unicode, соответствующие местной кодовой странице. В русифицированном варианте MS Windows это обычно кодовая страница СР1251.

Если исходный массив с кириллическим ASCII-текстом был в кодировке СР1251, то строка Java будет создана правильно. Кириллица попадет в свой диапазон '\u0400'– '\u04FF' кодировки Unicode.

Но у кириллицы есть еще, по меньшей мере, четыре кодировки.

  • В MS-DOS применяется кодировка СР866.
  • В UNIX обычно применяется кодировка KOI8-R.
  • На компьютерах Apple Macintosh используется кодировка MacCyrillic.
  • Есть еще и международная кодировка кириллицы ISO8859-5;

Например, байт 11100011 (0xЕ3 в шестнадцатеричной форме) в кодировке СР1251 представляет кириллическую букву Г, в кодировке СР866 – букву У, в кодировке KOI8-R – букву Ц, в ISO8859-5 – букву у, в MacCyrillic – букву г.

Если исходный кириллический ASCII-текст был в одной из этих кодировок, а местная кодировка СР1251, то Unicode-символы строки Java не будут соответствовать кириллице.

В этих случаях используются последние два конструктора, в которых параметром encoding указывается, какую кодовую таблицу использовать конструктору при создании строки.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.