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.