Duvida sobre formatações do java

Olá boa noite estava lendo livro e me deparo com esta formatação
System.out.printf("%-8s\t", metaData.getColumnName(i));
Gostaria de entender o que o %-8s\t faz com o impressão só isto que não entendi
Obrigado aguardo sua resposta!!

Uma dica é sempre olhar a documentação.

Primeiro, olhando na documentação de System.out vemos que ele é um PrintStream. Clicando no nome da classe você vai para a documentação dela, e lá você encontra o método printf, que diz o seguinte:

format - A format string as described in Format string syntax

E o texto “Format string syntax” é um link para esta página, que explica todos os formatos possíveis. Mas resumindo:

  • o % indica que terá uma regra de formatação a ser seguida
  • o - indica que o texto deve ser alinhado à esquerda
  • o 8 é o tamanho mínimo que será usado, ou seja, mesmo se o texto tiver menos que 8 caracteres, ainda sim ele usará 8 (preenchendo com espaços em branco caso o texto não tenha o tamanho mínimo)
  • o s indica que o valor a ser impresso será convertido para string

Ou seja, %-8s imprime um texto alinhado à esquerda, ocupando no mínimo 8 posições.

Já o \t é um TAB: é uma sequência de escape para representar o caractere de tabulação (não tem nada a ver com o formato do printf, é um caractere como qualquer outro). Aqui tem uma tabela com todas as sequências de escape suportadas pela linguagem.


Um exemplo:

System.out.printf("[%-8s]\t.", "abc");

Eu incluí os caracteres [ e ] e um ponto no final, para vermos melhor como fica a formatação. A saída será:

[abc     ]  .

Repare que “abc” foi impresso usando 8 espaços (as letras “abc” e mais 5 espaços, para completar os 8). E depois do ] tem um TAB, e por fim o ponto.

5 curtidas