Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. format
  2. Argumentos indexado
  3. Tamanho de campo e preechimento
  4. Alinhamento
  5. Precisão
  6. data
  7. moeda
  8. std::print
  9. placeholder aninhado

A classe String de Java fornece o método format que recebe uma string contendo identificadores de formatação e os valores como argumentos para formatação.

Sintaxe
public static String format(String format, Object... args)
Onde
format: string contendo identificador de formatação.
args: valores para formatação

Indentificadores comuns:
%s: string
%d: decimal
%f: floating-point
%c: character
%b: boolean
%x or %X: hexadecimal
%: porcentagem
Retorno
String contendo args formatados de acordo com format
Exemplo 1
public class Main
{
	public static void main(String[] args) {
		
		//hexadecimal
        System.out.println(String.format("%2X", 0xaa));
        System.out.println(String.format("%2x", 0xaa));
        
        //String e char
        System.out.println(String.format("%s", Integer.toBinaryString(0xaa)));
        System.out.println(String.format("%c", 'Ç'));
        
        //decimal
        System.out.println(String.format("%d", 0xaa));
        
        //boolean
        System.out.println(String.format("%b", 1));
        System.out.println(String.format("%b", true));
        System.out.println(String.format("%b", false));
        
        //porcentagem
        System.out.printf("%d%%%n", 10);
        System.out.printf("%d%%%n", 99);
        System.out.printf("%d%%%n", 100);
        System.out.printf("%d%%%n", 1000);

	}
}
Saída
AA
aa
10101010
Ç
170
true
true
false
10%
99%
100%
1000%

O método format permite que os valores passados como argumento possam ser indexados. Os índices são identificados por seu número seguido de $. Os índices podem ser informados fora de ordem.

Onde
n: índice
F: formatação do valor
Sintaxe
%n$F
Exemplo 2
public class Main
{
	public static void main(String[] args) {
		
     	String formatada = String.format("%1$.2f %2$d %3$s", 3.1415, 10, "string");
		System.out.println(formatada);
		
		formatada = String.format("%3$s %2$d %1$.2f", 3.1415, 10, "string");//fora de ordem
		System.out.println(formatada);
	}
}
Saída
3.14 10 string
string 10 3.14

O método format aceita a configuração de alinhamento, precisão e tamanho de campo para a formatação de seus argumentos. O preenchimento do campo é feito utilizando 0s à esquerda.

Sintaxe
%-cf
%0cf
Onde
0: preenchimento com zero
c: tamanho do campo
f: identificar de formato
-: alinhamento à esquerda. Opcional sendo alinhamento à direita.
Exemplo 3
public class Main
{
	public static void main(String[] args) {
		
		int contador = 10;
		
		//tamanho de campo + alinhamento padrão
		String formatada = String.format("|%5d|", contador);
		System.out.println(formatada);
		
		//alinhamento: esquerda
		formatada = String.format("|%-5d|", contador);
        System.out.println(formatada);
        
        //preencimento: 0
        formatada = String.format("|%5d|", contador);
        System.out.println(formatada);
		
	}
}
Saída
|   10|
|10   |
|00010|

A precisão de casas decimais para valores ponto-flutuante é feita como mostrado na sintaxe abaixo:

Sintaxe
%i.nf
Onde
i: dígitos para inteira
.: separador de precisão
n: número de casas decimais
f: identificador de formato
Exemplo 4
public class Main
{
	public static void main(String[] args) {
		
     	String formatada = String.format("%.2f", 3.1415);
		System.out.println(formatada);
		
		formatada = String.format("%2.2f", 13.1415);
		System.out.println(formatada);
		
		formatada = String.format("%3.2f", 113.1415);
		System.out.println(formatada);
	}
}
Saída
3.14
13.14
113.14

A precisão vista acima tem um significado diferente quando aplicada ao tipo string que limita a quantidade de caracteres exibidos.

Sintaxe
%.ns
Onde
.n: quantidade de caracteres para exibição
s: identificador de formato string
Exemplo 5
public class Main
{
	public static void main(String[] args) {
		
        //string completa
        String formatada = String.format("|%s|", "string");
        System.out.println(formatada);
        //string truncada
        formatada = String.format("|%.3s|", "string");
        System.out.println(formatada);
		
	}
}
Saída
|string|
|str|

A formatação de valores decimais pode ser feita utilizando uma classe específica fornecida por Java: DecimalFormat. As classes DecimalFormatSymbols e Locale são utilizadas para auxiliar na configuração do formato local.

Sintaxe: pacotes
import java.text.DecimalFormat; //Classe
import java.text.DecimalFormatSymbols; //configuração de . e ,
import java.util.Locale;
Sintaxe: pacotes
DecimalFormat()
DecimalFormat(String pattern)
DecimalFormat(String pattern, DecimalFormatSymbols <symbols>)
Onde
pattern: padrão para formatação. ver abaixo
<symbols>: Informação local sobre símbolos (,) e (.)

pattern:
0 – exibe dígito se fornecido, 0 caso contrário
# – exibe dígito se fornecido, nada caso contrário
. – indica onde colocar o separador inteiro
, – indica onde colocar o separador decimal

No exemplo abaixo, o pattern #,##0.00, significa que duas casas decimais e um dígito inteiro sempre devem ser exibidos. Caso duas ou mais casas inteiras estejam disponíveis serão exibidas com o separador de milhares ou milhões.

Exemplo 6
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

public class Main
{
	public static void main(String[] args) {
		
		Locale meuLocal = new Locale("pt", "BR"); //local
        DecimalFormat df = new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(meuLocal));
        
        String formatado = df.format(0.12);
        System.out.println(formatado);
        
        formatado = df.format(12.34);
        System.out.println(formatado);
        
        formatado = df.format(123.45);
        System.out.println(formatado);
        
        formatado = df.format(1234.56);
        System.out.println(formatado);
        
        formatado = df.format(12345.67);
        System.out.println(formatado);
        
        formatado = df.format(1234567.89);
        System.out.println(formatado);
        
	}
}
Saída
0,12
12,34
123,45
1.234,56
12.345,67
1.234.567,89
  1. 29/11/2025 - versão inicial: format, tamanho/alinhamento/precisão e valor decimal