Здесь упомянуты 10 самых задаваемых вопросов о строках в Java

[Перевод] 10 самых задаваемых вопросов о строках в Java - 1
  1. Как сравнивать строки? Что использовать: "==" или equals()?

    Вкратце, "==" сравнивает ссылки на строки, а equals() сравнивает значения, содержащиеся в этих строках. Если вы не хотите проверить, что две строки являются одним и тем же объектом, то вам следует использовать equals().

    Также было бы неплохо знать концепцию пула строк.

  2. Почему char[] предпочтительнее строк (String) для защиты конфиденциальной информации?

    Строки неизменяемы. Это значит, что однажды созданная строка не будет изменяться до непосредственного запуска механизма сборщика мусора. В случае с массивом совершенно очевидно, что мы можем изменять его элементы. Таким образом, конфиденциальная информация (например, пароль) не будет храниться в открытом виде в любом месте программы.

  3. Можем ли мы передавать строки в качестве параметра при использовании оператора switch?

    Да, начиная с 7-ой версии JDK. Ранее в 6-ой версии, такой возможности не было.

    
    // java 7 only!
    switch (str.toLowerCase()) {
          case "a":
               value = 1;
               break;
          case "b":
               value = 2;
               break;
    }
    
  4. Как конвертировать строку в целочисленное значение?

    
    int n = Integer.parseInt("10");
    

    Аналогично и для остальных примитивных типов Java.

  5. Как разделить строку на строки с разделителем-пробелом?

    Проще всего использовать регулярные выражения. "\s" выступает как заменитель пробельных символов, таких как " ", "\t", "\r", "\n".

    
    String[] strArray = aString.split("\\s+");
    
  6. <Что на самом деле делает метод substring()?

    В JDK 6, метод substring() показывал часть символов из существующей строки, но не создавал отдельного экземпляра строки. Чтобы создать новую строку, представленную в виде массива символов можно добавить какую-нибудь пустую строку, например, так:

    
    str.substring(m, n) + ""
    

    В результате мы получаем массив символов, являющийся нашей новой строкой. Такой подход иногда может сократить время выполнения кода, потому что сборщик мусора может уничтожить неиспользуемые большие строки и хранить только подстроки.

    В Oracle JDK 7, метод substring() создаёт новый массив символов, не используя уже существующий. Вы также можете взглянуть на диаграмму, представляющую разницу методов substring() в JDK 6 и JDK 7.

  7. String против StringBuilder против StringBuffer

    String против StringBuilder: StringBuilder изменяем, это значит, что мы можем изменить его содержание после создания объекта.

    StringBuilder против StringBuffer: StringBuffer синхронизирован, это значит, что он функционирует корректно при использовании из нескольких потоков одновременно, но медленнее чем StringBuilder.

  8. Как повторить строку несколько раз?

    В Python, мы можем просто умножить строку на число n и, тогда, она будет повторяться n раз. В Java, мы можем использовать метод repeat() из класса StringUtils библиотеки Apache Commons Lang.

    
    String str = "abcd";
    String repeated = StringUtils.repeat(str,3);
    //abcdabcdabcd
    
  9. Как конвертировать строку в дату?

    
    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
    
  10. Как посчитать количество вхождений определённого символа в строке?

    Используйте класс StringUtils из библиотеки Apache Commons Lang.

    
    int n = StringUtils.countMatches("11112222", "1");
    System.out.println(n);