Здесь упомянуты 10 самых задаваемых вопросов о строках в Java
![[Перевод] 10 самых задаваемых вопросов о строках в Java - 1](https://cdn.javarush.com/images/article/200514ae-2f76-48de-a3b3-a39635c19682/1024.jpeg)
-
Как сравнивать строки? Что использовать: "
==
" илиequals()
?Вкратце, "
==
" сравнивает ссылки на строки, аequals()
сравнивает значения, содержащиеся в этих строках. Если вы не хотите проверить, что две строки являются одним и тем же объектом, то вам следует использоватьequals()
.Также было бы неплохо знать концепцию пула строк.
Почему
char[]
предпочтительнее строк (String
) для защиты конфиденциальной информации?Строки неизменяемы. Это значит, что однажды созданная строка не будет изменяться до непосредственного запуска механизма сборщика мусора. В случае с массивом совершенно очевидно, что мы можем изменять его элементы. Таким образом, конфиденциальная информация (например, пароль) не будет храниться в открытом виде в любом месте программы.
Можем ли мы передавать строки в качестве параметра при использовании оператора switch?
Да, начиная с 7-ой версии JDK. Ранее в 6-ой версии, такой возможности не было.
// java 7 only! switch (str.toLowerCase()) { case "a": value = 1; break; case "b": value = 2; break; }
Как конвертировать строку в целочисленное значение?
int n = Integer.parseInt("10");
Аналогично и для остальных примитивных типов Java.
Как разделить строку на строки с разделителем-пробелом?
Проще всего использовать регулярные выражения. "
\s
" выступает как заменитель пробельных символов, таких как "\t
", "\r
", "\n
".String[] strArray = aString.split("\\s+");
<Что на самом деле делает метод
substring()
?В JDK 6, метод
substring()
показывал часть символов из существующей строки, но не создавал отдельного экземпляра строки. Чтобы создать новую строку, представленную в виде массива символов можно добавить какую-нибудь пустую строку, например, так:str.substring(m, n) + ""
В результате мы получаем массив символов, являющийся нашей новой строкой. Такой подход иногда может сократить время выполнения кода, потому что сборщик мусора может уничтожить неиспользуемые большие строки и хранить только подстроки.
В Oracle JDK 7, метод
substring()
создаёт новый массив символов, не используя уже существующий. Вы также можете взглянуть на диаграмму, представляющую разницу методов substring() в JDK 6 и JDK 7.String против StringBuilder против StringBuffer
String
противStringBuilder
:StringBuilder
изменяем, это значит, что мы можем изменить его содержание после создания объекта.StringBuilder
противStringBuffer
:StringBuffer
синхронизирован, это значит, что он функционирует корректно при использовании из нескольких потоков одновременно, но медленнее чемStringBuilder
.Как повторить строку несколько раз?
В Python, мы можем просто умножить строку на число
n
и, тогда, она будет повторяться n раз. В Java, мы можем использовать методrepeat()
из классаStringUtils
библиотеки Apache Commons Lang.String str = "abcd"; String repeated = StringUtils.repeat(str,3); //abcdabcdabcd
Как конвертировать строку в дату?
String str = "Sep 17, 2013"; Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str); System.out.println(date); //Tue Sep 17 00:00:00 EDT 2013
Как посчитать количество вхождений определённого символа в строке?
Используйте класс
StringUtils
из библиотеки Apache Commons Lang.int n = StringUtils.countMatches("11112222", "1"); System.out.println(n);
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ