Учебное пособие: Наследование и классы-коллекции
Перед работой со строкой ее следует создать. Это можно сделать разными способами.
Самый простой способ создать строку — это организовать ссылку типа String на строку-константу:
String si = "Это строка.";
Если константа длинная, можно записать ее в нескольких строках текстового редактора, связывая их операцией сцепления:
String s2 = "Это длинная строка, " +
"записанная в двух строках исходного текста";
Не забывайте разницу между пустой строкой String s = "", не содержащей ни одного символа, и пустой ссылкой String s = null, не указывающей ни на какую строку и не являющейся объектом.
Самый правильный способ создать объект с точки зрения ООП — это вызвать его конструктор в операции new. Класс String предоставляет девять конструкторов:
· String() — создается объект с пустой строкой;
· String(String str) — из одного объекта создается другой, поэтому этот конструктор используется редко;
· String(StringBuffer str) — преобразованная копия объекта класса StringBuffer;
· 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 возникает исключительная ситуация.
У кириллицы есть, по меньшей мере, четыре кодировки:
· В MS-DOS применяется кодировка СР866.
· В UNIX обычно применяется кодировка KOI8-R.
· На компьютерах Apple Macintosh используется кодировка MacCyrillic.
· Есть еще и международная кодировка кириллицы ISO8859-5;
Если исходный кириллический ASCII-текст был в одной из этих кодировок, а местная кодировка СР1251, то Unicode-символы строки Java не будут соответствовать кириллице.
В этих случаях используются последние два конструктора, в которых параметром encoding указывается, какую кодовую таблицу использовать конструктору при создании строки.
Еще один способ создать строку — это использовать два статических метода
copyValueOf(char[] charArray) и copyValueOf(char[] charArray, int offset, int length).
Они создают строку по заданному массиву символов и возвращают ее в качестве результата своей работы. Например, после выполнения следующего фрагмента программы
char[] с = ('С', 'и', 'м', 'в', 'о1 , 'л', 'ь', 'н', 'ы', 'й'};