Funções em Java: Domine a formatação de strings e saída de dados com format
- #Java
Sobre o format
Imagine que você precisa criar um programa que processe informações de clientes e deseja criar uma mensagem de boas-vindas personalizada com base nos dados do cliente, ou precisa criar um aplicativo financeiro e precisa exibir valores monetários em um formato de uma moeda específica. Para isso, existe um método de formatação da classe String chamado format, sendo o método utilizado na formatação de strings e na formatação de saída em Java.
Format é um método (função que se encontra dentro de uma classe) estático da classe String. Sua função é formatar uma string com base no formato e conjunto de argumentos. Como este é um método estático, não requer uma instância de nenhum objeto para usá-lo.
Estrutura
A sintaxe geral é:
String resultado = String.format(str, argumento1, argumento2, ...);
- str: É uma string que contém especificadores de formato, como %s para strings, %d para inteiros, %f para números de ponto flutuante, etc.
- argumento1, argumento2, ... : Os argumentos que serão inseridos nos locais correspondentes aos especificadores de formato na string str. Se os argumentos não estiverem na ordem correta, o resultado da formatação pode ser inesperado ou gerar uma exceção.
Especificadores de formato
Especificadores de formato são códigos usados em strings para controlar a formatação de valores quando são impressos ou convertidos. Eles indicam o local onde os valores devem ser inseridos na string resultante.
Lista de especificadores de formato:
- %s: usado para formatar valores de tipo String;
- %d: usado para formatar valores inteiros (int, long, byte, short) em decimal;
- %f: usado para formatar valores de ponto flutuante (float, double) em decimal;
- %c: usado para formatar caracteres;
- %b: usado para formatar valores booleanos;
- %o: usado para formatar valores inteiros em octal;
- %x: usado para formatar valores inteiros em hexadecimal;
- %e ou %E: usado para formatar valores de ponto flutuante em notação científica.
- %n: usado para inserir uma quebra de linha.
Uso básico
Neste exemplo, serão usados os especificadores de formato %s e %d para inserir dois valores de tipos diferentes em uma mesma frase.
public class MyClass {
public static void main(String args[]) {
String nome = "Fernando";
int idade = 27;
String resposta = String.format("Meu nome é %s e tenho %d anos", nome, idade);
System.out.println(resposta);
}
}
Veja a saída do código abaixo:
Meu nome é Fernando e tenho 27 anos
Exemplo com quebra de linha. Especificador: %n.
public class MyClass {
public static void main(String args[]) {
String nome = "Julia";
int idade = 21;
String resposta = String.format("Meu nome é %s.%nTenho %d anos", nome, idade);
System.out.println(resposta);
}
}
Veja a saída do código abaixo:
Meu nome é Julia.
Tenho 21 anos
Dentro de format(), se quisermos inserir '%', devemos usar '%%'.
public class MyClass {
public static void main(String args[]) {
int desconto = 55;
String resposta = String.format("Desconto foi de %d%%", desconto);
System.out.println(resposta);
}
}
Veja a saída do código abaixo:
Desconto foi de 55%
Uso avançado
Usar argumentos fora da ordem
Neste exemplo, os argumentos estão na ordem inversa na string a ser formatada. Ao colocar %2$s significa que o segundo argumento será tratado como uma string e %1$d significa que o primeiro argumento será tratado como um número inteiro. O índice (1 ou 2) indica a posição do argumento correspondente na lista de determinados argumentos.
public class MyClass {
public static void main(String args[]) {
String resposta = String.format("Nome: %2$s, Idade: %1$d", 30, "Jorge");
System.out.println(resposta);
}
}
Veja a saída do código abaixo:
Nome: Jorge, Idade: 30
Colocar precisão em números de ponto flutuante
O especificador de formato %f é usado para formatar um número de ponto flutuante, pode definir a precisão com que os dígitos decimais são exibidos. A sintaxe básica é %.xf, onde x representa o número de dígitos após a vírgula decimal.
public class MyClass {
public static void main(String args[]) {
double numero = 56.84541;
String resposta = String.format("Valor é R$ %.2f", numero);
System.out.println(resposta);
}
}
Veja a saída do código abaixo:
Valor é R$56.85
Usar para converter tipo
Neste exemplo, o número decimal 300 é formatado como hexadecimal usando %x.
public class MyClass {
public static void main(String args[]) {
int numero = 300;
String resposta = String.format("O número em hexadecimal é %x", numero);
System.out.println(resposta);
}
}
Veja a saída do código abaixo:
O número em hexadecimal é 12c
Exemplos com outros tipos
Formatando um argumento como um booleano.
public class MyClass {
public static void main(String args[]) {
boolean valor = true;
String resposta = String.format("Resposta: %b", valor);
System.out.println(resposta);
}
}
Veja a saída do código abaixo:
Resposta: true
Formatando um argumento como um caractere.
public class MyClass {
public static void main(String args[]) {
char letra = 'M';
String resposta = String.format("Letra: %c", letra);
System.out.println(resposta);
}
}
Veja a saída do código abaixo:
Letra: M
Conclusão
O método format facilita a formatação de strings, pode tornar o código mais legível e fácil de manter, especialmente quando você precisa criar strings complexas com concatenação de valores de variáveis, pois evita problemas de concatenação de strings, como o uso excessivo do operador "+". É um recurso da linguagem nativa que elimina a necessidade de instalação de bibliotecas e garante o máximo desempenho.
Veja mais com o link da documentação completa: https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html