Струнный класс
Вступление
В Java String - это объект, представленный в виде последовательности символов. Обработка «строк» символов является фундаментальным аспектом большинства языков программирования. Реализация строк как встроенных объектов позволяет Java предоставлять полный набор функций, которые делают обработку строк удобной. Например, в Java есть методы для сравнения двух строк, поиска подстроки, объединения двух строк и изменения регистра букв в строке. Класс String имеет 11 конструкторов и более 40 служебных методов. Строковые объекты являются неизменяемыми, то есть после создания объекта String вы не можете изменять символы, составляющие эту строку. Это не ограничение класса String, но оно будет очень полезно в многопоточном приложении. Вы можете выполнять все операции над вашим объектом String, только если что-то изменилось, каждый раз будет создаваться новый объект String. Этот подход используется потому, что фиксированные неизменяемые строки могут быть реализованы более эффективно, чем изменяемые.
Создание объекта String
В Java строки являются объектами. Как и другие объекты, вы можете создать экземпляр String с ключевым словом new следующим образом:
Шаг 1
Имя строки = новая строка («Амит»); Строка name = "Amit";
Эта строка кода создает новый объект класса String и назначает его для имени ссылочной переменной. Существуют некоторые существенные различия между этими параметрами, которые мы обсудим позже, но их объединяет то, что они оба создают новый объект String со значением «Amit» и присваивают его ссылочной переменной. Теперь предположим, что вам нужна вторая ссылка на объект String, на который ссылается s, и мы вызываем метод concat для объекта name, это создаст новый объект String со значением «Amit Himani», в то время как ссылка s2 по-прежнему указывает на объект «Amit». ».
Шаг 2
Строка s2 = имя; // относим s2 к той же строке, что и имя
Шаг 3
name = name.concat ("Himani"); // метод concat () добавляет в конец литерал
Давайте поймем эту концепцию графически,
Шаг 1 и Шаг 2
Шаг 3
Поскольку мы знаем, что строки в объектах типа String являются неизменяемыми, это означает, что содержимое экземпляра String не может быть изменено после его создания. Однако переменная, объявленная как ссылка String, может быть изменена так, чтобы указывать на какой-либо другой объект String в любое время.
Сравнение строковых объектов
Как мы видели ранее, объект String может быть создан с использованием конструктора с использованием нового ключевого слова, а также мы можем использовать литералы String. Существует фундаментальная разница между обоими способами создания строк. Давайте разберемся с этим с помощью Java-программы. Мы создаем два объекта String, используя литералы, и два объекта, вызывая конструктор класса String. Мы сравниваем объекты String с помощью оператора ==.
Java-код: перейти к редактору
public class StringDeepCompareDemo {
public static void main(String[] args) {
String s1 = new String("java");
String s2 = new String("java");
String s3 ="java";
String s4 ="java";
System.out.print("Comparing S1 and S2 ");
System.out.println(s1==s2);
System.out.print("Comparing S1 and S3 ");
System.out.println(s1==s3);
System.out.print("Comparing S3 and S4 ");
System.out.println(s3==s4);
System.out.print("Comparing S1 and S4 ");
System.out.println(s1==s4);
}
}
Выход:
Как показано выше, объекты String, созданные с использованием литералов, проходят тест на равенство, в противном случае все они терпят неудачу. Для «буквального» String присваивания, если значение присваивания идентично другому созданному значению String, то новый объект String не создается. Ссылка на существующий объект String возвращается. Ниже картина объясняет эту концепцию.
Одной из ключевых целей любого хорошего языка программирования является эффективное использование памяти. По мере роста приложений литералы String очень часто занимают большие объемы памяти программы, и во вселенной литералов String для программы часто возникает избыточность. Чтобы повысить эффективность использования памяти Java, JVM выделяет специальную область памяти, которая называется «Строка константных пулов». Когда компилятор встречает литерал String, он проверяет пул, чтобы увидеть, существует ли уже идентичная строка. Если совпадение найдено, ссылка на новый литерал направляется на существующую строку, и новый объект литерала строки не создается.
Сравнение значений строковых объектов
Строковый класс предоставляет множество вспомогательных методов, одним из которых является метод equals. Метод equals используется для сравнения значения объекта. Существует небольшая разница между оператором «==» и методом equals (). Сравнение с использованием «==» называется поверхностным сравнением, поскольку == возвращает true, если ссылка на переменную указывает на тот же объект в памяти. Сравнение с использованием метода equals () называется глубоким сравнением, поскольку оно будет сравнивать значения атрибутов. Давайте поймем эту концепцию с помощью Java-программы.
Java-код: перейти к редактору
public class StringCompareDemo {
public static void main(String[] args)
{
String s1 = new String("Hello");
String s2 = new String("Hello");
String s3 ="Hello"; String s4 ="Java";
System.out.print("Comparing S1 and S2 ");
System.out.println(s1.equals(s2));
System.out.print("Comparing S1 and S3 ");
System.out.println(s1.equals(s3));
System.out.print("Comparing S3 and S4 ");
System.out.println(s3.equals(s4));
System.out.print("Comparing S1 and S4 ");
System.out.println(s1.equals(s4));
}
}
Выход:
Резюме:
- В Java String это объект, представленный последовательностью символов
- Последовательность символов, заключенная в двойные кавычки, является литеральной строкой. Вы можете создать объект String, используя ключевое слово new и конструктор String.
- Сравнение строковых объектов может быть выполнено с помощью оператора ==, который называется поверхностным сравнением. Сравнение строковых объектов с использованием метода equals () называется глубоким сравнением.
Редактор кода Java:
Предыдущий: Попробуйте использовать ресурсную функцию Java 7
Далее: Важные методы класса String с примером
Новый контент: Composer: менеджер зависимостей для PHP , R программирования