image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Matheus Leme
Matheus Leme08/02/2024 11:53
Compartilhe
WEX - End to End EngineeringRecomendados para vocêWEX - End to End Engineering

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

image

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

Compartilhe
Recomendados para você
Deal - Spring Boot e Angular (17+)
Cognizant - Arquitetura com Spring Boot e Cloud
Claro - Java com Spring Boot
Comentários (0)
Recomendados para vocêWEX - End to End Engineering