Исходя из исходного кода Oracle JDK, кажется, что реализация создает новый Formatter
для каждого вызова String#format
, который, в свою очередь, выделяет новый StringBuilder
для каждого вызова. Так да. Но, как отмечено в комментарии к вашему вопросу, это очень сильно зависит от реализации, хотя здравый смысл подразумевает, что он выберет наиболее эффективный способ действий.