Alla data in cui scrivo, molti non sono ancora passati né alla versione 8 / 10 / 11 di Java né tanto meno alla 7, per chi non lo sapesse già la versione 7 del JDK, offre il metodo
String.format(String format, Object... args)

Un implementazione direi completa del caro e vecchio printf, non stampa di per sè ma ci permette di applicare la formattazione alla stringa che andremo poi a stampare tramite i classici metodi statici print() e println() di System.out.

Già questo basterebbe per togliersi un po' di pigrizia ed eventuali vincoli e passare almeno alla versione 7 di Java.
Vediamo la segnature riportata sopra, abbiamo i parametri format e la lista variabile di argomenti args che rappresentano le variabili che passeremo in successione e che saranno formattate.

Riguardo il metodo format dalla documentazione ufficiale Oracle abbiamo la seguente descrizione
%[argument_index$][flags][width][.precision]conversion

dove l’argomento opzionale argument_index è un intero che indica la posizione dell’argomento nella lista stessa.
Il primo argomento e referenziato con 1$ il secondo con 2$ e così via, piuttosto facile e intuitivo anche se non si ha esperienza in C o C++.

  • flags opzionale anch'esso è il set di caratteri che modifica il formato dell’output i flag validi dipendono dal valore per l’argomento conversion.
  • width opzionale intero non negativo indica il numero minimo di caratteri da scrivere sull'output.
  • precision intero non negativo è utilizzato per limitare il numero di caratteri e il comportamento specifico è in base a valore di conversion.
  • Come visibile conversion è l’unico argomento obbligatorio ed indica la formattazione dipende dal tipo del dato.

Il meccanismo è lo stesso utilizzato nel linguaggio C.
Un esempio può comunque chiarire meglio le idee, l’istruzione
String.format ( "%,6.2f", 352.100)

formatta il nostro numero come un float (type), la virgola come separatore della parte decimale e precisione come da parametrizzazione data.
352,10

Ovviamente tutto ciò non è limitato ai tipi di dato numerici ma vale anche per date e stringhe.