Skip to main content

Command Palette

Search for a command to run...

Formatando a saída em Java

Published
•3 min read•View as Markdown
Formatando a saída em Java
A
My name is Lucas. I'm a journalist and software developer who can take photos, print zines and make videos, that's no joke. 📸📰🎬💻🕺😅

Muitas vezes, quando precisamos formatar nossas saídas de forma elaborada, os métodos System.out.print() e System.out.println() não são suficientes.

Existem dois métodos que você pode usar nesses casos:

  • System.out.printf()
  • String.format()

O método printf()

Esse método geralmente tem 2 partes:

  • A String que deseja formatar. Essa string inclui regras de formatação por especificadores como %d, %s, etc.
  • A lista de argumentos que Java pode usar para formatar a string de acordo com os especificadores.

Veja um exemplo:

System.out.printf("My Name is %s. I was born in %d", "Mike", 1998);

  • A primeira parte é: "My Name is %s. I was born in %d".
    • Onde: %s e %d são especificadores de formato.
  • A segunda parte é a lista de argumentos: "Mike", 1998.

Diferentes casos de uso do printf()

  • %d: Exibe um valor inteiro.
public static void main(String[] args){
    System.out.printf("Display a Number %d", 15000);
}

Nesse caso, portanto, o %d será substituído por 15000 na saída.

Se você quiser que vários inteiros sejam exibidos na saída, use vários especificadores %d.

  • %f: Exibe um ponto flutuante.
public static void main(String[] args){
    System.out.printf("Display a Number %.2f", 15.23);
}

Nesse caso, será exibido um ponto flutuante com duas casas decimais.

  • %c: Exibe um caractere
  • %s: Exibe uma String

O método String.format()

Esse método da classe String funciona de forma muito semelhante ao printf(). A principal diferença é que ele retorna uma string em vez de imprimi-la. Vejamos alguns exemplos.

Exemplo:

public static void main(String[] args){
    int age = 22;
    char initial = 'M';
    String surname = "Anderson";
    double height = 1.72;

    String details = String.format(
            "My name is %c. %s.%nMy age is %d.%nMy height is %.2f.",
            initial, surname, age, height);
    System.out.println(details);
}

A classe String também tem um método mais novo e um pouco mais simples chamado (Object... args) que pode ser usado ao invés do estático String.format. Ambos têm o mesmo corpo, logo são completamente intercambiáveis. Veja um exemplo:

public static void main(String[] args) {
    int age = 22;
    char initial = 'M';
    String surname = "Anderson";
    double height = 1.72;

    String details = "My name is %c. %s.%nMy age is %d.%nMy height is %.2f."
            .formatted(initial, surname, age, height);

    System.out.println(details);
}

Obs.: lembre-se que formatted é um método de instância, ou seja, depende de um objeto para ser utilizado. Já o String.format é estático e pode ser chamado mesmo sem instanciarmos um objeto.

Resumo

Ao escrever aplicações complexas, não é recomendável combinar strings e variáveis ​​apenas com o operador +. Os métodos printf() and format() foram criados especificamente para isso. Ambos funcionam exatamente da mesma maneira, exceto que o printf() imprime a saída enquanto o format() retorna um String.