O básico sobre Java String Format

Neste post vou mostrar o que é String.format() em Java com exemplos práticos

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 28493 Visualizações

O método format da classe String nada mais é que um método estatico utilizado para formatar textos.

Como exemplo, imagine que precisa realizar a concatenação do texto:

Olá <José>, seu agendamento foi marcado para dia <05> de <Janeiro>.

Onde, os valores que estão entre <> serão subistituídos por variáveis. Então normalmente teriamos algo assim:

String message = "Olá "+ name +", seu agendamento foi marcado para dia "+ day +" de "+ month +".";

Note que fica um código verboso, dificil para ler e escrever.

Então, como alternativa, podemos utilizar o String.format(), que permite formatar um texto de forma que fique mais fácil para ler e para escrever, veja:

String message = String.format("Olá %s, seu agendamento foi marcado para dia %s de %s.", name, day, month);

Note que montamos a frase em um único texto e após os caracteres %s serão substituído pelos valores referentes as variáveis informados posteriormente, na mesma ordem.



Caso queira testar, classe completa é essa:

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Test;

public class StringFormatTest {

    @Test
    public void testBasic() {
        String name = "José";
        String day = "02";
        String month = "Janeiro";
        String message = "Olá "+ name +", seu agendamento foi marcado para dia "+ day +" de "+ month +".";

        assertEquals("Olá José, seu agendamento foi marcado para dia 02 de Janeiro.", message);
    }

    @Test
    public void testStringFormat() {
        String name = "José";
        String day = "02";
        String month = "Janeiro";
        String message = String.format("Olá %s, seu agendamento foi marcado para dia %s de %s.", name, day, month);

        assertEquals("Olá José, seu agendamento foi marcado para dia 02 de Janeiro.", message);
    }
}

Dessa foram podemos usar o String.format() como alternativa a concatenação, facilitando a escrita.

Mas, a real função do String.format() ainda é outra. Sim, podemos utilizar o String.format() não apenas para montar simples textos, mas, como o próprio nome sugere, formatar textos.

Vamos a um exemplo do uso de formatação de texto com String.format().

Formatando valores com ponto flutuante com String.format()

Pegamos o exemplo do valor de PI, então temos: PI = 3,141593. Vamos imprimir essa linha no Java usando String.format(), veja:

String pi = String.format("%s = %f", "PI", Math.PI);

Note que para imprimir texto usamos %s mas para imprimir um valor com ponto flutuante usamos: %f.

Agora vamo limitar o número de casas decimais do valo de PI para 3 casas apenas, veja:

String pi = String.format("%s = %.3f", "PI", Math.PI);

Note que apenas alteramos o %f para %.3f com isso ao executar a formatação, o valor de PI será limitado a 3 casas decimais.

Caso queira testar segue a classe completa deste teste:

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Test;

public class StringFormatPITest {

    @Test
    public void test() {
        // podemos utilizar %s para textos e %f para valores com ponto flutuante.
        String piComplete = String.format("%s = %f", "PI", Math.PI);
        assertEquals("PI = 3,141593", piComplete);

        // usando %.3f formatamos os valores com ponto flutuante com o máximo de 3 casa decimais.
        String piFormat = String.format("%s = %.3f", "PI", Math.PI);
        assertEquals("PI = 3,142", piFormat);
    }
}

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!