%
: строка формата
4$
: четвертый аргумент значения
2
: ширина (длина при печати аргумента)
s
: это преобразование строкового аргумента
например, следующий фрагмент:
StringBuffer sb=new StringBuffer();
Formatter formatter=new Formatter(sb,Locale.UK);
formatter.format("-%4$5s-%3$5s-%2$5s-%1$5s-", "a", "b", "c", "d");
System.out.println(sb);
производит вывод:
- d- c- b- a-
(ширина 5 символов на аргумент, дополненная пробелами)
и замена 5
на 2
даст следующий результат:
- d- c- b- a-
Видишь разницу? :)