Как я могу распечатать всю строку, а не только один символ? - PullRequest
0 голосов
/ 11 января 2020

Вот моя проблема: я строю StringBuilder, и я построил toLowerCase() метод, который возвращает мне только один символ, а не всю строку.

 public MyStringBuilder1 toLowerCase() {
      String newStr = "";
      for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') {
          newStr = newStr + (char)(s.charAt(i) + 32) + "";
        }
      }
      return new MyStringBuilder1(newStr);
    }

 public static void main(String[] args) { 
      // Create a MyStringBuilder1 object 
      MyStringBuilder1 str1 = new MyStringBuilder1("Radixsort"); 
      // Display string as lowercase 
      System.out.println("\nString to lower case: " + str1.toLowerCase());
  }

1 Ответ

1 голос
/ 11 января 2020

вы можете использовать toString() на StringBuilder, чтобы вернуть String

, но вы не используете мощность StringBuilder, когда речь идет о длинных строках, конкатенация их может занять большое количество ресурсов

для объединения строк, одна строка копируется в новый слот в памяти, а затем следующая

StringBuilder дает поведение, подобное списку, вы можете добавить динамически символизировать в stringBuilder с гораздо меньшими усилиями

, поэтому вместо

newStr = newStr + (char)(s.charAt(i) + 32) + "";

лучше использовать

stringBuilder.append((char)(s.charAt(i) + 32)) 

и предлагаем прочитать следующее учебное пособие

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

...