Примеры в этой статье суммируют использование строк в Java. Поделитесь этим со всеми для справки. Конкретный анализ заключается в следующем:
Суть строки — это массив типа char, но в Java все строки, объявленные в двойных кавычках «», являются объектами класса String. Это также отражает полностью объектно-ориентированные характеристики языка Java.
Строковый класс
1. Объект класса String представляет собой константную строку. Он имеет неизменяемую длину. Другими словами, после создания экземпляра класса String строка, представленная этим экземпляром, не может быть изменена. Похоже на:
стр = стр + «Привет»;
Эта операция по сути создает новый объект String путем объединения двух объектов String: str и «Hello», а затем присваивает ссылку на новый объект String переменной str. Широкое использование этой операции может привести к ухудшению производительности. Если вам нужно часто менять содержимое строки, вам следует использовать класс StringBuffer или класс StringBuilder. Мы можем использовать небольшую программу, чтобы увидеть, насколько велика разница в производительности между классами String и StringBuffer.
class StringTest { public static void main(String[] args) { /** * Выполнить 10 000 операций добавления с использованием объектов String и StringBuffer соответственно * Время выполнения теста * 2013.3.18 */ String constStr = ""; long lTime = System . currentTimeMillis(); for(int i = 0; i <10000; ++i) constStr += i; System.out.println("Const String:"+(System.currentTimeMillis()-lTime)); StringBuilder strBuf = new StringBuilder(""); lTime = System.currentTimeMillis(); for(int i = 0; i < 10000 ; ++i) strBuf.append(String.valueOf(i)); System.out.println("Буферизовано Строка: "+(System.currentTimeMillis()-lTime)); } }Результат выполнения:
Видно, что StringBuilder занимает секунды, а класс String — 300 мс, что показывает огромную разницу в производительности.
И StringBuilder, и StringBuffered представляют собой (изменяемый) строковый объект переменной длины. Разница между ними заключается в том, что класс StringBuffered выполняет некоторую безопасную обработку с точки зрения синхронизации потоков, а StringBuilder делает противоположное. Так что, если вы программируете только в одну строку, StringBuilder немного более эффективен, чем StringBuffered (на самом деле разница невелика).
2. «Hello World» — это строковый объект. Мы можем использовать «Hello World» непосредственно как объект, например:
if("Привет".equals("Привет")) System.out.println("Да");Результат вывода: Да.
3. При сравнении строковых объектов вы должны использовать методquals() вместо простого использования == для оценки. Поскольку == сравнивает, совпадают ли экземпляры, на которые ссылаются два ссылочных имени, методquals() сравнивает, равны ли строки в двух объектах.
Распространенный вопрос: сколько всего объектов String генерирует следующий фрагмент кода?
String str1 = новая строка («Привет»); String str2 = новая строка («Привет»);
Вероятно, большинство людей ответят: 2. Но на самом деле здесь генерируются всего 3 объекта String. Помимо str1 и str2, не забывайте, что «Hello» также является объектом String.
4. Струнный пул (Бассейн)
Java поддерживает пул строк при выполнении. При появлении строки, объявленной в двойных кавычках, JVM сначала проверит, существует ли в памяти тот же объект String (с теми же символами). Если он существует, он вернет ссылку на объект, который уже существует в памяти. его не существует, он создаст новый объект String. Это экономит память. Как показано в следующем фрагменте кода, str1 и str2 фактически указывают на один и тот же объект String.
String str1 = "Привет";String str2 = "Привет";
5. Получить параметры командной строки
Когда мы объявляем основной метод, мы объявляем формальный параметр типа String[]. В этом массиве объектов String хранятся параметры командной строки, переданные пользователем при выполнении этой программы. Обратите внимание, что в отличие от языка C, параметры командной строки в Java начинаются с первой переменной после имени программы. Другими словами, данные String[] не включают имя приложения. Например:
класс strCmd { public static void main(String[] args) { if(args.length > 0) { for(String str : args) System.out.println(str);Вывод при выполнении java strCmd Hello World!
6. Разделение струн
Подобно strtok в языке C, класс String также имеет метод разделения, который может отделять строку в указанном формате. Метод разделения возвращает массив объектов String, представляющих каждую отдельную строку. нравиться:
class strSplit { public static void main(String[] args) { String str = "Hello/tWorld/tI/tLove/tYou!"; System.out.println("Исходная строка: " + strArr); str.split("/t"); for(String s: strArr) System.out.println(s);Среди них параметрами метода Split() могут быть регулярные выражения. Вы можете использовать статический метод match() класса Matcher в пакете java.util, чтобы определить, соответствует ли строка регулярному выражению.
Класс String имеет множество других мощных функций, и нам следует научиться читать документацию по API. Здесь отражается важность английского языка...
Я надеюсь, что эта статья будет полезна каждому, кто занимается программированием на Java.