в чем разница между классом String, буфером строк и построителем строк в Java?

Класс строк:

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

Класс строкового буфера:

потокобезопасный… поставляется с самоблокировкой… изменяемой…. цикл 10⁷ займет 800–900 миллисекунд

Построитель строк:

асинхронный.. поток небезопасный.. обычно мы делаем однопоточное кодирование.. самый быстрый из всех…. цикл 10⁷ займет 250–300 миллисекунд

Вывод: используйте StringBuilder, в многопоточном режиме используйте StringBuffer

ссылка там для рабочего кода, чтобы играть с