Ниже приведены 10 самых часто задаваемых вопросов по Java Strings.
10. Как сравнить строки? Использовать «==» или equals()?
Если просто, то «==» используется, если ссылки равны, а equals()
используется, если значения равны. Если вы хотите проверить, являются ли две строки одним и тем же объектом, то вы всегда должны использовать equals()
.
Почему так? Вот наглядный пример и хорошее объяснение что такое пул строк в Java.
9. Почему предпочтительнее char[], чем string для безопасности конфиденциальной информации?
Строки являются неизменными, то есть после создания они не меняются до уничтожения сборщиком мусора. А используя массив вы можете явно изменять его элементы. Таким образом, безопасность конфиденциальной информации (например, пароль) не будет присутствовать в любой точке системы.
8. Можно ли использовать string в операторе switch?
Да, можно. Правда, такая возможность появилась в Java лишь с JDK 7. До этого мы не могли использовать string в операторе switch.
1 2 3 4 5 6 7 8 9 10 |
// Только для java 7 и новых версий! switch (inString.toLowerCase()) { case "aaa": value = 1; break; case "bbb": value = 2; break; ... } |
7. Как преобразовать (конвертировать) String в int?
1 |
int num = Integer.parseInt("20"); |
Просто, но часто забывается.
6. Как разбить строку по пробелам?
И здесь все просто:
1 |
String[] stringArray = someString.split("\\s+"); |
Как видите, здесь используется метод split с параметром в виде регулярного выражения.
5. Что на самом деле делает метод substring()
?
В JDK 6 метод substring()
возвращает массив символов, из существующей строки, но не создает новый. Чтобы создать новую строку, необходимо было использовать небольшой трюк — добавить в конец пустую строку:
1 |
inString.substring(m, n) + "" |
В результате выполнения этого кода создастся новый массив символов, который конвертируется в новую строку. Описанный выше подход может сделать вашу программу быстрее, потому что сборщик мусора будет собирать лишь неиспользуемую строку, а сохранит только подстроку.
Начиная с JDK 7, метод substring()
создает новый символьный массив, не используя входную строку.
4. String vs StringBuilder vs StringBuffer
String vs StringBuilder: StringBuilder изменяемый, а это значит, что вы можете изменить его после создания.
StringBuilder vs StringBuffer: StringBuffer синхронизируемый, а это означает, что он поточно-безопасный, но работает медленнее, чем StringBuilder.
3. Как продублировать/повторить строку в Java?
В Java мы можем использовать метод repeat()
из StringUtils пакета Apache Commons Lang.
1 2 3 |
String inString = "абвг"; String repeated = StringUtils.repeat(str,3); //абвгабвгабвг |
2. Как преобразовать строку в дату?
Давайте покажем это все на примере:
1 2 3 4 |
String str = "Jul 26, 2015"; Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str); System.out.println(date); //Sun Jul 26 00:00:00 EDT 2015 |
1. Как посчитать количество вхождений символа в строке?
Мы же хотим, чтобы наша программа работала быстро и без ошибок, правильно? Тогда давайте использовать метод countMatches()
из StringUtils пакета Apache Commons Lang.
На этом наш ТОП-10 заканчивается. Следите за обновлениями в Блоге и выходом новых статей.