@ Фрэнк Мейснер (новичок в этом, пока не может отвечать на ответы)
Просто чтобы прояснить разницу между String и StringBuilder (в случае, если кто-то читает это, запутался), в то время как оба сохраняют CharSequenceдержать как char [], char [] внутри String не может быть изменено, поэтому для каждого изменения должна быть создана новая String.В случае StringBuilder существуют методы, такие как StringBuilder.append (String), которые могут изменить внутренний char [] объекта StringBuilder, поэтому если вызывается StringBuilder.append (String), для объекта не нужно создавать новый объект.содержимое StringBuilder может быть изменено.
Согласно примеру Фрэнка Мейснера, System.out.println (sb);напечатает «aa aa», так как метод append (String) был вызван в StringBuilder sb.final здесь не больно, так как идентичность sb не меняется, только его состояние.