Строки в Java

12-10-24 Java Java, String 0

В этом уроке мы научимся работать со строками в Java. Строки, которые так широко используются в программировании представляют из себя последовательность символов. В языке программирования Java строки — это объект. Платформа Java предоставляет класс String для создания и управления строками.

Создание строк

Самый простой способ создания строки выглядит так:

String greeting = "Hello world!";

В данном случае «Hello World!» — это строковый литерал (т.е. константа) состоящая из последовательности символов, заключенных в кавычки. Всякий раз, когда компилятор сталкивается со строковым литералом, он создает объект типа String со значением, в нашем случае, «Hello World!».

Как и любой другой объект, строку можно создать, используя ключевое слово new. Класс String имеет три конструктора, которые позволяют создавать объект, используя разные источники, например, массив символов.

char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' };
String helloString = new String(helloArray);
System.out.println(helloString);

Последняя строка примера выведет на экран hello.

Класс String является неизменяемым, поэтому один раз создав объект, мы не сможем его изменить. Некоторые методы, которые мы рассмотрим ниже, позволяют это исправить. Т.к. String неизменяем, эти методы создают и возвращают новую строку, содержащую результат операции.

Длина строки

Методы для получения информации о строке называются методами доступа. Один из этих методов length(). Он возвращает количество символов в строке. В следующем примере len будет равно 17:

String palindrome = "Dot saw I was Tod";
int len = palindrome.length();

Переменная palindrome содержит палиндром, т.е. слово или предложение, которое одинаково читается в обе стороны. Напишем небольшую программу, которая перевернет палиндром. Мы будем использовать метод charAt(i), который возвращает i-й символ строки, начиная с 0.

public class StringDemo {
    public static void main(String[] args) {
        String palindrome = "Dot saw I was Tod";
        int len = palindrome.length();
        char[] tempCharArray = new char[len];
        char[] charArray = new char[len];

        // создадим из строки
        // массив символов
        for (int i = 0; i < len; i++) {
            tempCharArray[i] =
                palindrome.charAt(i);
        }

        // перевернем массив символов
        for (int j = 0; j < len; j++) {
            charArray[j] =
                tempCharArray[len - 1 - j];
        }

        String reversePalindrome =
            new String(charArray);
        System.out.println(reversePalindrome);
    }
}

Программа выведет

doT saw I was toD

Для того чтобы перевернуть строку, мы сначала создали из строки массив символов (первый цикл), затем создали новый массив, в который записали перевернутый первый массив, далее создали новую строку. Класс String содержит метод getChars(), который возвращает массив символов, поэтому первый цикл можно заменить строкой:

palindrome.getChars(0, len, tempCharArray, 0);

Конкатенация строк

Класс String реализует метод соединения двух строк:

string1.concat(string2);

Данный код вернет новую строку, содержащую string1 и присоединенную к ней string2.

Также можно использовать данный метод со строковыми литералами:

"My name is ".concat("Rumplestiltskin");

Чаще строки соединяют с помощью оператора «+», пример:

"Hello," + " world" + "!"

В результате получится строка «Hello, world!».

Оператор «+» широко используется для вывода информации, например:

String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");

Код выведет «Dot saw I was Tod».

Подобная конкатенация может быть использована в связке с любыми другими объектами. Для объектов не являющимися строками будет вызван метод toString(), который конвертирует их в строки.

Задаем формат вывода строк

Мы уже рассматривали методы printf() и format() когда форматировали вывод чисел. Класс String имеет аналогичный метод, который возвращает строку. Используя статический метод format() можно создать стоковый шаблон, который можно повторно использовать, например, вместо этого:

System.out.printf("The value of the float " +
                  "variable is %f, while " +
                  "the value of the " +
                  "integer variable is %d, " +
                  "and the string is %s",
                  floatVar, intVar, stringVar);

можно использовать этот код:

String fs;
fs = String.format("The value of the float " +
                   "variable is %f, while " +
                   "the value of the " +
                   "integer variable is %d, " +
                   " and the string is %s",
                   floatVar, intVar, stringVar);
System.out.println(fs);

На этом всё! 🙂

Смотрите также Управление строками, функции для работы со строками в Java.

Хочешь получать статьи на почту?

Подпишись на обновления!
* Ваш email не будет разглашен/продан. Вы сможете отписаться в любое время.

Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *