String в Java иммутабельный — каждая конкатенация создаёт новый объект. Если склеиваешь строки в цикле, получишь кучу мусора в heap и просадку по производительности. StringBuilder — мутабельный, он меняет внутренний char-массив без создания новых объектов. StringBuffer — то же самое, но synchronized, поэтому медленнее. В 99% случаев используй StringBuilder, StringBuffer нужен только в многопоточке, и то редко.
Зачем нужен StringBuilder и чем он отличается от String?
Junior
390 просмотровAFK Offer AI
Как устроена иерархия исключений в Java?