Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Освоение строк в Java: создание, методы и лучшие практики

Строки в Java

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

В Java строка — это последовательность символов. Например, "hello" — строка, содержащая символы 'h', 'e', 'l', 'l' и 'o'.

Для представления строки в Java используются двойные кавычки. Например,

// создание строки
String type = "Java programming";

Здесь создана строковая переменная type, инициализированная строкой Java Programming.


Пример: Создание строки в Java

class Main {
    public static void main(String[] args) {
        // создаем строки
        String first = "Java";
        String second = "Python";
        String third = "JavaScript";
        // выводим строки
        System.out.println(first); // Java
        System.out.println(second); // Python
        System.out.println(third); // JavaScript
    }
}

В примере созданы три строки: first, second, third. Мы создаем строки напрямую, как примитивные типы.

Однако есть и другой способ создания строк (через ключевое слово new). Мы рассмотрим его позже.

Примечание: Строки в Java — не примитивные типы (как int, char и т.д.). Все строки — объекты предопределенного класса String.

И все строковые переменные — экземпляры класса String.


Операции со строками в Java

Класс String предоставляет различные методы для операций над строками. Рассмотрим наиболее часто используемые.

1. Получение длины строки

Для нахождения длины строки используется метод length() класса String. Например,

class Main {
    public static void main(String[] args) {
        // создаем строку
        String greet = "Hello! World";
        System.out.println("Строка: " + greet);
        // получаем длину greet
        int length = greet.length();
        System.out.println("Длина: " + length);
    }
}

Вывод

Строка: Hello! World
Длина: 12

Метод length() вычисляет общее количество символов в строке и возвращает его. Подробнее: Длина строки в Java.


2. Объединение двух строк в Java

Две строки можно объединить с помощью метода concat(). Например,

class Main {
    public static void main(String[] args) {
        // первая строка
        String first = "Java ";
        System.out.println("Первая строка: " + first);
        // вторая строка
        String second = "Programming";
        System.out.println("Вторая строка: " + second);
        // объединяем две строки
        String joinedString = first.concat(second);
        System.out.println("Объединенная строка: " + joinedString);
    }
}

Вывод

Первая строка: Java
Вторая строка: Programming
Объединенная строка: Java Programming

Обратите внимание на оператор:

String joinedString = first.concat(second);

Метод concat() присоединяет second к first и присваивает результат joinedString.

Строки также можно объединять оператором + в Java. Подробнее: Конкатенация строк в Java.


3. Сравнение двух строк

В Java для сравнения двух строк используется метод equals(). Например,

class Main {
    public static void main(String[] args) {
        // создаем 3 строки
        String first = "java programming";
        String second = "java programming";
        String third = "python programming";
        // сравниваем первую и вторую
        boolean result1 = first.equals(second);
        System.out.println("Строки first и second равны: " + result1);
        // сравниваем первую и третью
        boolean result2 = first.equals(third);
        System.out.println("Строки first и third равны: " + result2);
    }
}

Вывод

Строки first и second равны: true
Строки first и third равны: false

В примере созданы 3 строки: first, second, third. Метод equals() проверяет, равна ли одна строка другой.

Метод equals() сравнивает содержимое строк. Подробнее: Сравнение строк в Java.

Примечание: Строки также можно сравнивать оператором == в Java. Однако этот подход отличается от equals(). Подробнее: Оператор == против equals() для строк в Java.


Экранирование символов в строках Java

Экранирующий символ используется для экранирования некоторых символов внутри строки.

Предположим, нужно включить двойные кавычки внутри строки.

// включить двойные кавычки
String example = "This is the "String" class";

Поскольку строки обозначаются двойными кавычками, компилятор сочтет "This is the " строкой. Приведенный код вызовет ошибку.

Для решения используется экранирующий символ \ в Java. Например,

// использование экранирующего символа
String example = "This is the \"String\" class.";

Теперь экранирующие символы говорят компилятору игнорировать двойные кавычки и прочитать весь текст.


Строки в Java неизменяемы (Immutable)

В Java строки неизменяемы. Это значит: однажды созданную строку нельзя изменить.

Для глубокого понимания рассмотрим пример:

// создаем строку
String example = "Hello! ";

Здесь создана строковая переменная example, содержащая "Hello! ".

Теперь предположим, мы хотим изменить строку.

// добавить другую строку "World"
// к предыдущей строке example
example = example.concat(" World");

Кажется, мы изменили значение предыдущей строки. Однако это неверно.

Посмотрим, что произошло:

  1. JVM берет первую строку "Hello! "
  2. создает новую строку, добавляя "World" к первой
  3. присваивает новую строку "Hello! World" переменной example
  4. первая строка "Hello! " остается неизменной

Создание строк с ключевым словом new

До сих пор мы создавали строки как примитивные типы.

Поскольку строки в Java — объекты, их можно создавать через new. Например,

// создание строки через new
String name = new String("Java String");

В примере создана строка name с помощью new.

При создании объекта строки вызывается конструктор String(). Подробнее о конструкторах: Конструкторы в Java.

Примечание: Класс String предоставляет различные конструкторы для создания строк. Подробнее: Java String (официальная документация Java).


Пример: Создание строк Java через new

class Main {
    public static void main(String[] args) {
        // создание строки через new
        String name = new String("Java String");
        System.out.println(name); // Java String
    }
}

Строковые литералы против new

Теперь, когда мы знаем оба способа создания строк, посмотрим на главное различие.

В Java JVM поддерживает пул строк (string pool) для хранения всех строк в памяти. Пул строк помогает переиспользовать строки.

1. При создании строк через строковые литералы,

String example = "Java";

Мы напрямую задаем значение строки (Java). Компилятор сначала проверяет пул строк: существует ли уже такая строка.

2. При создании строк через ключевое слово new,

String example = new String("Java");

Значение строки не задается напрямую. Поэтому новая строка "Java" создается даже если "Java" уже есть в пуле строк.


Методы класса String в Java

Помимо упомянутых, в Java существует множество методов строк. Вот некоторые из них:

МетодОписание
contains()проверяет, содержит ли строка подстроку
substring()возвращает подстроку строки
join()объединяет заданные строки с разделителем
replace()заменяет указанный старый символ на новый
replaceAll()заменяет все подстроки, соответствующие regex
replaceFirst()заменяет первое совпадение подстроки
charAt()возвращает символ в указанной позиции
getBytes()преобразует строку в массив байтов
indexOf()возвращает позицию указанного символа
compareTo()сравнивает две строки в лексикографическом порядке
compareToIgnoreCase()сравнивает строки, игнорируя регистр
trim()удаляет начальные и конечные пробелы
format()возвращает отформатированную строку
split()разбивает строку на массив строк
toLowerCase()преобразует строку в нижний регистр
toUpperCase()преобразует строку в верхний регистр
valueOf()возвращает строковое представление аргумента
toCharArray()преобразует строку в массив char
matches()проверяет, соответствует ли строка заданному regex
startsWith()проверяет, начинается ли строка с заданной подстроки
endsWith()проверяет, заканчивается ли строка заданной подстрокой
isEmpty()проверяет, пуста ли строка
intern()возвращает каноническое представление строки
contentEquals()проверяет, равна ли строка charSequence
hashCode()возвращает хеш-код строки
subSequence()возвращает подпоследовательность из строки

java

  1. Строки в C#: основы, операции и продвинутые техники
  2. Освоение операторов Java: типы, синтаксис и практические примеры
  3. Интерфейсы в Java: концепции, реализация и лучшие практики
  4. Строковые представления в Java Enums: настройка toString() и лучшие практики
  5. Try-with-resources в Java: автоматическое управление ресурсами
  6. Аннотации в Java: типы, размещение и практические примеры
  7. Понимание String.charAt() в Java: синтаксис, возвращаемый тип, исключения и пример
  8. Освоение String.endsWith() в Java: проверка суффиксов строки с примерами
  9. Замена строк в Java: replace(), replaceAll() и replaceFirst() подробно
  10. Java String toLowerCase() и toUpperCase(): преобразование регистра с учётом локали