Переведено с: 10 главных вопросов о Java Strings
Проще говоря, «==" проверяет, совпадают ли ссылки двух строк, а методquals() проверяет, совпадают ли значения двух строк. Если вы не хотите проверить, являются ли две строки одним и тем же объектом, лучше использовать методquals().
Было бы лучше, если бы вы знали механизм сохранения строк.
Строки неизменяемы, а это означает, что после создания они остаются там до тех пор, пока не будут очищены сборщиком мусора. Используя массив, вы можете явно изменять его элементы. Таким образом, конфиденциальная информация (например, пароли) не появится больше нигде в системе.
Для Java7 ответ — да. Начиная с JDK7, мы можем использовать String в качестве условия оператора переключения. До JDK6 мы не могли использовать String в качестве условия оператора переключения.
// только для Java 7!switch (str.toLowerCase()) {case "a": value = 1; case "b": value = 2;
int n = Integer.parseInt("10");
Проще говоря, его используют так часто, что иногда его игнорируют.
Мы можем просто использовать регулярные выражения для его разложения. "/s" представляет собой пробельные символы, такие как " ", "/t", "/r", "/n".
String[] strArray = aString.split("//s+");
В JDK6 метод substring() предоставляет окно в массив символов, представляющий существующую строку, но не создает новую строку. Чтобы создать новую строку, представленную новым массивом символов, добавьте пустую строку следующим образом:
str.substring(m, n) + ""
Это создает совершенно новый массив символов, представляющий новую строку. Приведенный выше подход иногда ускоряет код, поскольку сборщик мусора собирает большие неиспользуемые строки и сохраняет только подстроку.
В Oracle JDK 7 функция substring() создает новый массив символов без использования существующего массива. Диаграмма в методе substring() в JDK 6 и JDK 7 иллюстрирует различия между substring() в JDK 6 и JDK 7.
String против StringBuilder: StringBuilder является изменчивым, что означает, что его значение можно изменить после создания.
StringBuilder против StringBuffer: StringBuffer является синхронным, что означает, что он потокобезопасен, но медленнее, чем StringBuilder.
В Python мы можем повторить строку, умножив ее на число. В Java мы можем повторить строку с помощью метода повторения() класса StringUtils в пакете Apache Commons Lang.
String str = "abcd";Повторяющаяся строка = StringUtils.repeat(str,3);//abcdabcdabcd
String str = "17 сентября 2013 г.";Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);System.out.println(date);//Вторник, 17 сентября, 00:00 :00 по восточному времени 2013 г.
Используйте класс StringUtils из пакета Apache Commons Lang.
int n = StringUtils.countMatches("11112222", "1");System.out.println(n);
Дополнительный вопрос: как определить, что строка содержит только заглавные буквы
Переведено с: 10 главных вопросов о Java Strings