Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Formatação de Texto

String nome = "Maria";
int idade = 30;
double valor = 55.9999;
System.out.println(String.format("Meu nome é %s, eu tenho %d anos e hoje gastei %.2f reais", nome, idade, valor));

e

String nome = "João";
int aulas = 4;

String mensagem = """
                  Olá, %s!
                  Boas vindas ao curso de Java.
                  Teremos %d aulas para te mostrar o que é preciso para você dar o seu primeiro mergulho na linguagem!
                  """.formatted(nome, aulas);

System.out.println(mensagem);

Fiquei em dúvida com a diferença de uso entre String.format e** .formatted
O String.format seria para linhas de texto normais, enquanto o .formatted se usa para blocos de texto?

Ou pelo o que entendi, o String.format seria para formatar o texto somente quando ele for impresso, dentro do 'SOUT'
Enquanto .formatted formata o texto já dentro da String, assim quando for impresso já está ajeitado

1 resposta
solução!

Olá, Danielle, como vai?

A diferença entre String.format e .formatted está mais na forma de uso do que na capacidade de formatação em si. Ambos utilizam os mesmos placeholders (%s, %d, %.2f etc.) e produzem o mesmo resultado final. O que muda é que String.format é um método estático da classe String, enquanto .formatted é um método de instância, chamado diretamente sobre a própria string que contém o template.

Na prática, o .formatted surgiu em versões mais recentes do Java para deixar a escrita mais fluida, especialmente quando se trabalha com Text Blocks, mas ele não é exclusivo deles. Ele pode ser usado com strings comuns também, da mesma forma que String.format pode ser usado com blocos de texto.

Por exemplo:

Usando String.format:

String mensagem = String.format(
    "Olá, %s. Você tem %d notificações.",
    nome, notificacoes
);

Usando .formatted:

String mensagem = "Olá, %s. Você tem %d notificações."
    .formatted(nome, notificacoes);

Com Text Block também funcionam as duas abordagens:

String mensagem = """
Olá, %s
Total de aulas: %d
""".formatted(nome, aulas);

Ou:

String mensagem = String.format("""
Olá, %s
Total de aulas: %d
""", nome, aulas);

Ou seja, não é uma divisão entre “texto normal” e “bloco de texto”. A escolha costuma ser por legibilidade e preferência de escrita, sendo o .formatted mais direto quando a string já está definida no próprio código.

Espero ter ajudado.

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado