Рубрики
Без рубрики

Строка Java

Строка Java, Формат строки Java, Длина строки Java, Разделение строки Java, Замена строки Java, Содержит строку Java, Сравнение строк Java, методы строк Java.

Автор оригинала: Pankaj Kumar.

Строка Java является одним из наиболее широко используемых классов. Класс Java String определен в java.lang пакете.

Строка Java

  • По сути, строка-это последовательность символов, но это не примитивный тип.
  • Когда мы создаем строку в java, она фактически создает объект типа String.
  • Строка является неизменяемым объектом, что означает, что она не может быть изменена после ее создания.
  • Строка-единственный класс, в котором перегрузка операторов поддерживается в java. Мы можем объединить две строки с помощью оператора+. Например "a"+"b"="ab" .
  • Java предоставляет два полезных класса для работы со строками – StringBuffer и StringBuilder .

Давайте продолжим и узнаем больше о классе Java String.

Различные способы создания строки

Существует множество способов создания строкового объекта в java, некоторые из популярных приведены ниже.

  1. Использование строкового литерала

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

  2. Использование нового ключевого слова

    Мы можем создать строковый объект с помощью нового оператора, как и любой обычный класс java. В классе String доступно несколько конструкторов для получения строки из массива символов, массива байтов, буфера строк и StringBuilder.

Сравнение строк Java

Класс String предоставляет equals() и equalsIgnoreCase() методы для сравнения двух строк. Эти методы сравнивают значение строки, чтобы проверить, равны ли две строки или нет. Он возвращает true , если две строки равны, и false , если нет.

package com.journaldev.string.examples;

/**
 * Java String Example
 * 
 * @author pankaj
 *
 */
public class StringEqualExample {

	public static void main(String[] args) {
		//creating two string object
		String s1 = "abc";
		String s2 = "abc";
		String s3 = "def";
		String s4 = "ABC";
		
		System.out.println(s1.equals(s2));//true
		System.out.println(s2.equals(s3));//false
		
		System.out.println(s1.equals(s4));//false;
		System.out.println(s1.equalsIgnoreCase(s4));//true
	}

}

Результатом вышеуказанной программы является:

true
false
false
true

Класс String реализует Сопоставимый интерфейс, который предоставляет compareTo() и compareToIgnoreCase() методы и сравнивает две строки лексикографически.

Обе строки преобразуются в значение Юникода для сравнения и возвращают целое значение, которое может быть больше, меньше или равно нулю. Если строки равны, то он возвращает ноль, либо он возвращает либо больше, либо меньше нуля.

package com.journaldev.examples;

/**
 * Java String compareTo Example
 * 
 * @author pankaj
 *
 */
public class StringCompareToExample {

	public static void main(String[] args) {
		
		String a1 = "abc";
		String a2 = "abc";
		String a3 = "def";
		String a4 = "ABC";
		
		System.out.println(a1.compareTo(a2));//0
		System.out.println(a2.compareTo(a3));//less than 0
		System.out.println(a1.compareTo(a4));//greater than 0
		System.out.println(a1.compareToIgnoreCase(a4));//0
	}

}

Результатом вышеуказанной программы является:

0
-3
32
0

Пожалуйста, прочитайте это более подробно в примере сравнения строк .

Строковые методы Java

Давайте рассмотрим некоторые из популярных методов класса String на примере программы.

  1. раскол()

    Метод Java String split() используется для разделения строки с использованием заданного выражения. Существует два варианта метода split ().

    • split(регулярное выражение строки) : Этот метод разбивает строку с использованием заданного выражения регулярного выражения и возвращает массив строк.
    • split(регулярное выражение строки, ограничение int) : Этот метод разбивает строку с использованием заданного выражения регулярного выражения и возвращает массив строк, но элемент массива ограничен указанным пределом. Если указанное ограничение равно 2, то метод возвращает массив размером 2.

    Результатом вышеуказанной программы является:

  2. содержит(последовательность символов)

    Java String содержит() методы проверяет, содержит ли строка указанную последовательность символов или нет. Этот метод возвращает значение true, если строка содержит указанную последовательность символов, в противном случае возвращает значение false.

    Результатом вышеуказанной программы является:

  3. длина()

    Метод Java String length() возвращает длину строки.

  4. заменить()

    Метод Java String replace() используется для замены определенной части строки другой строкой. Существует четыре варианта метода replace ().

    • заменить(char oldChar, char newChar) : Этот метод заменяет все вхождения oldChar на newChar в строке.
    • заменить(цель последовательности символов, замена последовательности символов) : Этот метод заменяет все целевые литералы литералами замены в строке.
    • replaceAll(регулярное выражение строки, замена строки) : Этот метод заменяет все совпадения подстроки с указанным регулярным выражением указанной заменой в строке.
    • replaceFirst(регулярное выражение строки, замена строки) : Этот метод заменяет первое вхождение подстроки, совпадающей с указанным регулярным выражением, указанной заменой в строке.

    Результатом приведенной выше программы является:

  5. формат()

    Для форматирования строки используется метод Java String format (). Существует два варианта метода java String format ().

    • формат(языковой стандарт l, формат строки, объект... аргументы) : Этот метод форматирует строку, используя указанный языковой стандарт, формат строки и аргументы.
    • формат(формат строки, объект... аргументы) : Этот метод форматирует строку, используя указанный формат строки и аргументы.

    Результатом вышеуказанной программы является:

  6. подстрока()

    Этот метод возвращает часть строки на основе заданных индексов.

Объединение Строк

Объединение строк-это очень простая операция в java. Строка может быть объединена с помощью оператора “+” или с помощью метода concat () .

package com.journaldev.examples;

/**
 * Java String concatenation
 * 
 * @author pankaj
 *
 */
public class StringConcatExample {

	public static void main(String[] args) {
		
		String s1 = "Hello";
		String s2 = "World";
		String s3 = s1 + s2;
		//using + operator
		System.out.println("Using + operator: ");
		System.out.println(s3);
		
		//using concat method
		System.out.println("Using concat method: ");
		System.out.println(s1.concat(s2));

	}

}

Результатом вышеуказанной программы является:

Using + operator: 
HelloWorld
Using concat method: 
HelloWorld

Проверьте этот пост для получения дополнительной информации о конкатенации строк в Java .

Пул строк Java

Управление памятью является наиболее важным аспектом любого языка программирования. Управление памятью в случае строки в Java немного отличается от любого другого класса. Чтобы сделать Java более эффективной памятью, JVM ввела специальную область памяти для строки, называемую пулом строковых констант.

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

Давайте взглянем на приведенный ниже пример программы.

package com.journaldev.examples;

/**
 * Java String Pool Example
 * 
 */
public class StringPoolExample {

	public static void main(String[] args) {
		
		String a = "abc";
		String b = "abc";
		String c = "def";
		
		//same reference
		if (a==b) {
			System.out.println("Both string refer to the same object");
		}
		
		//different reference
		if (a==c) {
			System.out.println("Both strings refer to the same object");
		}else {
			System.out.println("Both strings refer to the different object");
		}

	}

}

Результатом приведенной выше программы является:

Both string refer to the same object
Both strings refer to the different object

Проверьте этот пост, чтобы узнать больше о пуле строк Java .

Метод String intern()

Когда мы создаем строку с использованием строкового литерала, она будет создана в пуле строк, но что, если мы создадим строку с использованием нового ключевого слова с тем же значением, которое существует в пуле строк? Можем ли мы переместить строку из памяти кучи в пул строк?

Для этого используется метод intern (), который возвращает каноническое представление строкового объекта. Когда мы вызываем метод intern() для объекта string, созданного с использованием ключевого слова new, он проверяет, есть ли уже строка с тем же значением в пуле?

Если да, то он возвращает ссылку на этот строковый объект из пула. Если нет, то он создает новую строку с тем же содержимым в пуле и возвращает ссылку.

package com.journaldev.examples;

/**
 * Java String intern
 * 
 * @author pankaj
 *
 */
public class StringInternExample {

	public static void main(String[] args) {
		
		String s1 = "pankaj";
		String s2 = "pankaj";
		String s3 = new String("pankaj");
		
		System.out.println(s1==s2);//true
		System.out.println(s2==s3);//false
		
		String s4 = s3.intern();
		System.out.println(s1==s4);//true

	}

}

Проверьте этот пост, чтобы узнать больше о методе стажера Java String.

Преимущества неизменяемости строк

Некоторые из преимуществ того, что строка является неизменяемым классом, заключаются в следующем:

  1. Пул строковых констант, следовательно, экономит память.
  2. Безопасность, как она есть, изменить невозможно.
  3. Потокобезопасный
  4. Безопасность загрузки класса

Проверьте этот пост, чтобы узнать больше о преимуществах неизменяемости строк .

Соединение строк Java 8()

В классе String в Java 8 добавлен новый статический метод join (). Этот метод возвращает новую строку, состоящую из копий элементов последовательности символов, соединенных вместе с копией указанного разделителя. Давайте рассмотрим пример, чтобы легко понять это.

List words = Arrays.asList(new String[]{"Hello", "World", "2019"});
String msg = String.join(" ", words);
System.out.println(msg);

Вывод: Привет, Мир 2019

Строковые методы Java 9

В выпуске Java 9 в класс String добавлены два метода. Это – кодовые точки() и символы(). Оба этих метода возвращают объект IntStream, над которым мы можем выполнять некоторые операции.

Давайте быстро рассмотрим эти методы.

String s = "abc";

s.codePoints().forEach(x -> System.out.println(x));

s.chars().forEach(x -> System.out.println(x));

Выход:

97
98
99
97
98
99

Новые методы класса строк Java 11

В выпуске Java 11 в класс String добавлено много новых методов.

  • isBlank() – возвращает значение true, если строка пуста или содержит только кодовые точки с пробелами, в противном случае значение false.
  • lines() – возвращает поток строк, извлеченных из этой строки, разделенных терминаторами строк.
  • strip(), stripLeading(), stripTrailing() – для удаления начальных и конечных пробелов из строки.
  • repeat() – возвращает строку, значением которой является объединение этой строки, повторенное заданное количество раз.

Давайте рассмотрим пример программы для этих методов.

package com.journaldev.strings;

import java.util.List;
import java.util.stream.Collectors;

/**
 * JDK 11 New Functions in String class
 * 
 * @author pankaj
 *
 */
public class JDK11StringFunctions {

	public static void main(String[] args) {
		// isBlank()
		String s = "abc";
		System.out.println(s.isBlank());
		s = "";
		System.out.println(s.isBlank());

		// lines()
		String s1 = "Hi\nHello\rHowdy";
		System.out.println(s1);
		List lines = s1.lines().collect(Collectors.toList());
		System.out.println(lines);

		// strip(), stripLeading(), stripTrailing()
		String s2 = "  Java,  \tPython\t ";
		System.out.println("#" + s2 + "#");
		System.out.println("#" + s2.strip() + "#");
		System.out.println("#" + s2.stripLeading() + "#");
		System.out.println("#" + s2.stripTrailing() + "#");

		// repeat()
		String s3 = "Hello\n";
		System.out.println(s3.repeat(3));
		s3 = "Co";
		System.out.println(s3.repeat(2));

	}

}

Выход:

false
true
Hi
Hello
Howdy
[Hi, Hello, Howdy]
#  Java,  	Python	 #
#Java,  	Python#
#Java,  	Python	 #
#  Java,  	Python#
Hello
Hello
Hello

CoCo

Это все о классе Java String, это примеры методов и манипуляций со строками.

Ссылка: API Doc