Anterior você viu o uso de print
e println
métodos para a impressão de cadeias de caracteres para a saída padrão (System.out
). Uma vez que todos os números podem ser convertidos para strings (como você verá mais tarde nesta lição), você pode usar estes métodos para imprimir uma mistura arbitrária de strings e números., A linguagem de programação Java tem outros métodos, no entanto, que lhe permitem exercer muito mais controle sobre sua saída de impressão quando os números estão incluídos.
A printf e format Métodos
java.io
pacote inclui um PrintStream
classe tem dois métodos de formatação que você pode usar para substituir o print
e println
. Estes métodos, format
e printf
, são equivalentes um ao outro., O familiar System.out
que você tem sido usando acontece para ser um PrintStream
objeto, de modo que você pode invocar PrintStream
métodos de System.out
. Assim, você pode usar format
ou printf
em qualquer lugar no seu código onde você já vem usando print
ou println
., Por exemplo,
System.out.format(.....);
A sintaxe para esses dois java.io.PrintStream
métodos é o mesmo:
public PrintStream format(String format, Object... args)
, onde format
é uma seqüência de caracteres que especifica a formatação a ser utilizado e args
é uma lista de variáveis a ser impresso usando a formatação. Um exemplo simples seria
O primeiro parâmetro, format
, é uma cadeia de formato que especifica como os objetos no segundo parâmetro, args
, devem ser formatados., The format string contains plain text as well as format specificiers, which are special characters that format the arguments of Object... args
. (The notation Object... args
is called varargs, which means that the number of arguments may vary.)
os especificadores de formato começam com um sinal percentual (%) e terminam com um conversor. O conversor é um caractere que indica o tipo de argumento a ser formatado. Entre o sinal de percentagem ( % ) e o Conversor você pode ter opções e especificadores opcionais., Existem muitos conversores, bandeiras, e especificadores, que estão documentadas no java.util.Formatter
Aqui está um exemplo:
int i = 461012;System.out.format("The value of i is: %d%n", i);
%d
especifica que a única variável é um número inteiro decimal. O%n
é um personagem newline independente de plataforma. A saída é:
The value of i is: 461012
printf
e format
métodos estão sobrecarregados., Cada um tem uma versão com a seguinte sintaxe:
public PrintStream format(Locale l, String format, Object... args)
Para imprimir os números no sistema francês (onde é utilizada uma vírgula no lugar da casa decimal em inglês representação de números em ponto flutuante), por exemplo, você usaria:
Exemplo
a tabela A seguir lista alguns dos conversores e bandeiras que são usados no programa de exemplo, TestFormat.java
, que segue a tabela.,
Converter | Flag | Explanation |
---|---|---|
d | A decimal integer. | |
f | A float. | |
n | A new line character appropriate to the platform running the application. You should always use %n , rather than \n ., |
|
tB | uma data& conversão Temporalnome completo do mês específico do local. | |
td, te | data & conversão de tempodia 2 dígitos do mês. td tem zeros líderes conforme necessário, te não. | |
ty tY | data & conversão de tempoty = ano de 2 dígitos, tY = ano com 4 dígitos. | |
tl | uma data& hora de conversão em Relógio de 12 horas., | |
tM | data & conversão de tempominutos em 2 dígitos, com zeros à esquerda quando necessário. | |
tp | uma data& conversão Temporalam / pm específica local (caso inferior). | |
tm | uma data &conversão Temporalmeses em 2 dígitos, com zeros iniciais conforme necessário., | |
tD | A date & time conversiondate as %tm%td%ty | |
08 | Eight characters in width, with leading zeroes as necessary. | |
+ | Includes sign, whether positive or negative. | |
, | Includes locale-specific grouping characters. | |
– | Left-justified.. | |
.3 | Three places after decimal point. | |
10.,3 | dez caracteres em largura, justificável à direita, com três casas decimais. |
o programa seguinte mostra alguma da formatação que você pode fazer comformat
. A saída é mostrada entre aspas no comentário embutido:
format
e printf
. Mais detalhes podem ser encontrados na seçãoBasic I/O
da trilha essencial, na página “formatação”.,Using
String.format
to create strings is covered in Strings. a classe DecimalFormat
pode usar a classe
para controlar a visualização de zeros, prefixos e sufixos iniciais e finais, agrupando (milhares) separadores e o separador decimal.DecimalFormat
oferece uma grande flexibilidade na formatação de números, mas pode tornar o seu código mais complexo.,
O exemplo que se segue cria um id
objeto,myFormatter
, passando uma cadeia de padrão para oDecimalFormat
construtor.,format()
métodoDecimalFormat
herda deNumberFormat
, em seguida, é chamado pormyFormatter
aceita umdouble
valor como um argumento e retorna o número formatado em uma seqüência de caracteres:
Aqui está um exemplo de um programa que ilustra o uso de DecimalFormat
:
O resultado é:
123456.789 ###,###.### 123,456.789123456.789 ###.## 123456.79123.78 000000.000 000123.78012345.67 $###,###.### $12,345.67
a tabela A seguir explica cada linha de saída.