Если видео недоступно для просмотра, попробуйте выключить блокировщик рекламы.

Посмотрим на сумасшествие из последней задачи:

public static String muchCorrectVeryReasoning(String[] strings) {
    String result = "";
    for (int i = 0; i < strings.length; i++) {
        int realI = i + 1;
        if (realI % 2 != 0) {
            char[] currentStr = strings[i].toCharArray();
            System.out.println("Try to add from string " + strings[i] + " with index " + realI);
            for (int j = 0; j < currentStr.length; j++) {
                int realJ = j + 1;
                if (realJ % 2 == 0) {
                    char toAdd = currentStr[j];
                    System.out.println("Add char " + toAdd + " with index " + realJ);
                    result += toAdd;
                }
            }
        }
    }

    return result;
}    

Обратите внимание на строку result += toAdd. Эта запись эквивалентна записи result = result + toAdd. В результате выполнения + для добавления одного символа каждый раз создается новая строка и может как затрачиваться лишняя память так и увеличиваться общее время выполнения. Хотя конкретно в этом примере это скорее не так важно и читаемость кода может быть важнее, использование строки для конкатенации(склеивания) конечного результата в цикле может быть затратным. В джаве есть специальный тип для подобных операций, StringBuilder. Его использование выглядит как:

StringBuilder sb = new StringBuilder();
for (int object : objects) {
    sb.append(object);
} 
String result = sb.toString();   

Стоит заметить что в джаве обычная конкатенация будет автоматически использовать StringBuilder и запись вида str1 + "alala" + str2 после обработки компилятором будет выглядеть примерно как new StringBuilder().add(str1).add("alala").str2.toString поэтому в большинстве случаев можно и не задумываться о происходящем.

Следующее, на что мы можем обратить внимание - использование внутреннего массива для перебора символов строки. На самом деле у типа String есть метод charAt(int index) и для получения, например, первого символа строки нам не нужно работать с внутренним массивом напрямую, достаточно будет использовать этот метод:

char head = "some string".charAt(0);

И последнее, что мы разберем сегодня, это запись

System.out.println("Try to add from string " + strings[i] + " with index " + realI);

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

System.out.println(String.format("Try to add from string %s with index %d", string, digit));

Вообще говоря тип String имеет много методов в стандартной библиотеке, некоторые из которых используются достаточно часто, но наверное не стоят того, чтобы рассматривать их отдельно в курсах. Поэтому вам следует изучить соответствующую документацию - https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →