Os especificadores de formato são marcadores especiais que indicam como diferentes tipos de dados devem ser apresentados no texto. Eles sempre começam com o símbolo % e são substituídos pelos valores reais durante a execução.
O especificador %s representa uma variável string.
Os especificadores de formato são usados principalmente com o método printf e o método format para controlar como os dados são exibidos.
Vejamos as diferenças entre o método printf e o método println:
public class EspecificadoresFormato {
public static void main(String[] args) {
String nome = "Ana";
int idade = 25;
// Usando println (imprime na tela e pula uma linha)
System.out.println("Olá, meu nome é " + nome + " e tenho " + idade + " anos.");
// Usando printf com especificadores de formato
System.out.printf("Olá, meu nome é %s e tenho %d anos.", nome, idade);
// Observe que printf não pula linha automaticamente
// Para pular linha com printf, use \n
System.out.printf("\nOutra mensagem usando printf com quebra de linha.\n");
// Mais um exemplo com printf
System.out.printf("Nome: %s, Idade: %d\n", nome, idade);
}
}
Olá, meu nome é Ana e tenho 25 anos.
Olá, meu nome é Ana e tenho 25 anos.
Outra mensagem usando printf com quebra de linha.
Nome: Ana, Idade: 25
Dica: Repare que o println imprime na tela e pula uma linha, mas o printf imprime na tela e não pula uma linha. Para pular linha com o printf, use o caractere de escape \n.
Usado para representar uma string (texto).
String nome = "Carlos";
System.out.printf("Nome: %s\n", nome);
Vamos ver um exemplo mais detalhado do uso de especificadores de formato:
public class ExemploFormatacao {
public static void main(String[] args) {
String nome = "João";
int idade = 30;
double altura = 1.75;
// Usando System.out.println (concatenação tradicional)
System.out.println("Nome: " + nome);
System.out.println("Idade: " + idade);
System.out.println("Altura: " + altura);
System.out.println(); // Linha em branco
// Usando System.out.printf com especificadores de formato
System.out.printf("Nome: %s\n", nome);
System.out.printf("Idade: %d\n", idade);
System.out.printf("Altura: %.2f\n", altura);
System.out.println(); // Linha em branco
// Combinando múltiplos especificadores em uma única chamada
System.out.printf("Olá, meu nome é %s, tenho %d anos e minha altura é %.2f metros.\n",
nome, idade, altura);
// Usando format (semelhante ao printf, mas retorna uma String)
String mensagem = String.format("Ficha: %s, %d anos, %.2f m", nome, idade, altura);
System.out.println(mensagem);
}
}
Nome: João
Idade: 30
Altura: 1.75
Nome: João
Idade: 30
Altura: 1.75
Olá, meu nome é João, tenho 30 anos e minha altura é 1.75 metros.
Ficha: João, 30 anos, 1.75 m
Vamos ver outro exemplo com a formatação de produtos em uma lista:
public class FormatacaoProdutos {
public static void main(String[] args) {
// Informações de produtos
String produto1 = "Café";
int quantidade1 = 2;
double preco1 = 9.99;
String produto2 = "Açúcar";
int quantidade2 = 1;
double preco2 = 3.50;
String produto3 = "Pão";
int quantidade3 = 5;
double preco3 = 0.75;
// Imprimindo cabeçalho da lista
System.out.println("LISTA DE COMPRAS");
System.out.println("-------------------------");
System.out.println("Produto | Qtd | Preço unitário");
System.out.println("-------------------------");
// Imprimindo produtos com println (menos organizado)
System.out.println(produto1 + " | " + quantidade1 + " | R$ " + preco1);
System.out.println(produto2 + " | " + quantidade2 + " | R$ " + preco2);
System.out.println(produto3 + " | " + quantidade3 + " | R$ " + preco3);
System.out.println("\nCom formatação adequada:");
System.out.println("-------------------------");
// Usando printf para melhor formatação
System.out.printf("%-10s | %3d | R$ %5.2f\n", produto1, quantidade1, preco1);
System.out.printf("%-10s | %3d | R$ %5.2f\n", produto2, quantidade2, preco2);
System.out.printf("%-10s | %3d | R$ %5.2f\n", produto3, quantidade3, preco3);
// Calculando total
double total = (quantidade1 * preco1) + (quantidade2 * preco2) + (quantidade3 * preco3);
System.out.println("-------------------------");
System.out.printf("Total: R$ %.2f\n", total);
}
}
LISTA DE COMPRAS
-------------------------
Produto | Qtd | Preço unitário
-------------------------
Café | 2 | R$ 9.99
Açúcar | 1 | R$ 3.5
Pão | 5 | R$ 0.75
Com formatação adequada:
-------------------------
Café | 2 | R$ 9.99
Açúcar | 1 | R$ 3.50
Pão | 5 | R$ 0.75
-------------------------
Total: R$ 27.23
Teste seus conhecimentos sobre especificadores de formato em Java:
Reforce o conteúdo desta aula com mais dois exercícios práticos: