Documentandomi sulla manipolazioni delle stringhe ho "scoperto" che quando lavoro con la classe String, lavoro con oggetti "non-modificabili", ovvero quando tento di modificare il contenuto di una String in realtà spesso creo un nuovo oggetto con il giusto contenuto. Quindi mi sembra di capire che nel caso si debba manipolare spesso delle stringhe sia più proficuo, in termini di memoria, ricorrere alle classi StringBuffer e StringBuilder.
Vorrei capire se la riflessione che ho fatto finora ha senso e nel caso lo avesse quale tra le classi StringBuffer e StringBuilder è preferibile usare e quando usarle, ovvero quando l'uso di String comporta seriamente un eccessivo "spreco di memoria".