String attention = "Внимание: ";
String s = attention + "неизвестный символ";
Вторая операция — присваивание += — применяется к переменным в левой части:
attention += s;
Поскольку операция + перегружена со сложения чисел на сцепление строк, встает вопрос о приоритете этих операций. У сцепления строк приоритет выше, чем у сложения, поэтому записав "2" + 2 + 2, получим строку "222". Но записав 2 + 2 + "2", получим строку "42", поскольку действия выполняются слева направо. Если же запишем "2" + (2 + 2), то получим "24".
Кроме операции сцепления соединить строки можно методом concat (), например:
String s = attention.concat("иеизвестиый символ");
Как узнать длину строки
Для того чтобы узнать длину строки, т. е. количество символов в ней, надо обратиться к методу length ( ):
String s = "Write once, run anywhere."; int len = s.length();
или еще проще
int len = "Write once, run anywhere.".length();
поскольку строка-константа — полноценный объект класса String.
Заметьте, что строка — это не массив, у нее нет поля length.
Внимательный читатель, изучивший рис. 4.7, готов со мной не согласиться. Ну что же, действительно, символы хранятся в массиве, но он закрыт, как и все поля класса String.
Логический метод isEmpty(), появившийся в Java SE 6, возвращает true, если строка пуста, в ней нет ни одного символа.
Как выбрать символы из строки
Выбрать символ с индексом ind (индекс первого символа равен нулю) можно методом charAt(int ind). Если индекс ind отрицателен или не меньше, чем длина строки, возникает исключительная ситуация. Например, после определения
char ch = s.charAt(3);
переменная ch будет иметь значение 't' .
Все символы строки в виде массива символов можно получить методом toCharArray( ).
Если же надо включить в массив символов dst, начиная с индекса ind массива, подстроку от индекса begin включительно до индекса end исключительно, то используйте метод
getChars(int begin, int end, char[] dst, int ind) типа void. В массив будет записано end - begin символов, которые займут элементы массива, начиная с индекса ind до индекса ind + (end — begin) — 1.
Этот метод создает исключительную ситуацию в следующих случаях:
□ ссылка dst == null;
□ индекс begin отрицателен;
□ индекс begin больше индекса end;
□ индекс end больше длины строки;
□ индекс ind отрицателен;
□ ind + (end — begin) больше dst.length.
Например, после выполнения
char[] ch = {’К’, ’о’, ’н’, ’е’, ’ц’, ’ ’, ’с’, ’в’, ’е’, ’т’, ’а’};
"Пароль легко иайти".getChars(2, 8, ch, 2);
результат будет таков:
ch = {’К’, ’о’, ’р’, ’о’, ’л’, ’ь’, ' ', ’л’, ’е’, ’т’, ’а’};
Если надо получить массив байтов, содержащий все символы строки в байтовой кодировке ASCII, то используйте метод getBytes (). Этот метод при переводе символов из Unicode в ASCII использует локальную кодовую таблицу.
Если же надо получить массив байтов не в локальной кодировке, а в какой-то другой, применяйте метод getBytes (String encoding) или метод getBytes (Charset encoding).
Так сделано в листинге 5.1 при создании объекта msg. Строка "\"Россия в\"" перекодировалась в массив СР866-байтов для правильного вывода кириллицы в консольное окно Command Prompt операционных систем MS Windows.
Как выбрать подстроку
Метод substring (int begin, int end) выделяет подстроку от символа с индексом begin включительно до символа с индексом end исключительно. Длина подстроки будет равна end — begin. Индекс можно задать любым целым типом, кроме типа long.
Метод substring ( int begin) выделяет подстроку от индекса begin включительно до конца строки.
Если индексы отрицательны, индекс end больше длины строки или begin больше, чем end, то возникает исключительная ситуация.
Например, после выполнения следующего фрагмента
String s = "Write once, run anywhere.";
String sub1 = s.substring(6, 10);
String sub2 = s.substring(16);
получим в строке sub1 значение "once", а в sub2-значение "anywhere.".
Как разбить строку на подстроки
Метод split (String regExp) разбивает строку на подстроки, используя в качестве разделителей символы, входящие в параметр regExp, записывает подстроки в массив строк и возвращает ссылку на этот массив. Сами разделители не входят ни в одну подстроку.
Например, после выполнения следующего фрагмента
String s = "Write:once,:run:anywhere.";
String[] sub = s.split(":");
Читать дальше
Конец ознакомительного отрывка
Купить книгу