Permiten mejorar la salida proporcionando
mecanismos para justificar y alinear formatos numéricos, de cadenas y de
fechas. El funcionamiento de estas cadenas está basado en el del lenguaje C, por
lo que su similitud es grande, aunque no total, porque Java es más restrictivo
y donde C ignora un error, Java puede generar una excepción.
Cada método que genera una salida formateada,
por ejemplo printf, utiliza una
cadena de formato de tipo String y
una lista de argumentos.
El String,
puede contener texto fijo y uno o más especificadores de formato que comienzan
por el símbolo %.
Ej.: printf(“Nombre:
%s, Edad: %d, Sueldo: %7.2”, nombre, edad, sueldo);
Salida: Nombre:
Ana Pérez, Edad: 28, Sueldo: 1856,45
Especificador de formato para caracteres y números.
%[índice$] [flags] [ancho] [.precisión] conversión
[índice$]
índice es un número entero que nos indica la posición del
argumento en la lista de argumentos. El primer argumento será 1$, el segundo 2$
y así sucesivamente. Nos va a permitir cambiar el orden o repetir argumentos.
[flags]
Son una serie de caracteres que modifican el
aspecto de la salida, por ejemplo la alineación.
[ancho]
El número mínimo de caracteres que será
escrito en la salida.
[.precisión]
Sirve para restringir el número de decimales o de caracteres.
Para los argumentos de tipo general es el máximo número de caracteres que será
escrito en la salida. Para los números de coma flotante (‘e’, ‘E’, ‘f’) es el
número de decimales después del separador. Si la conversión es ‘g’ o ‘G’, es el
número de dígitos de la magnitud resultante después del redondeo. Para la
conversión ‘a’ o ‘A’, no debe utilizarse. Para carácter, enteros y fechas, no
se puede utilizar, porque produciría una excepción.
conversión
Indica el tipo al que hay que acomodar el
resultado.
Especificador de
formato para fechas y horas.
%[índice$] [flags] [ancho] conversión
índice, flags y ancho
tienen
el mismo significado que en el apartado anterior.
conversión
Es una secuencia de dos caracteres. El primero de ellos tiene
que ser ‘t’ o ‘T’, y el segundo indica el formato que tiene que ser usado.
Conversión
Está dividido en las
siguientes categorías:
1.
General – puede ser aplicado a cualquier tipo
2.
Carácter – puede ser aplicado a tipos básicos de caracteres Unicode:
char, Character, byte, Byte, short, and Short. También puede ser aplicado a los tipos int and Integer
cuando Character.isValidCodePoint
(int) devuelve true
3.
Numérico
1.
Entero – puede ser aplicado a los tipos enteros de Java: byte, Byte, short, Short, int,Integer, long, Long, y BigInteger
4.
Fecha/Hora - puede ser aplicado a los tipos Java que son capaces de
codificar una fecha u hora: long, Long, Calendar, y Date.
5.
Tanto por ciento - produce un literal '%' ('\u0025')
6.
Salto de línea – produce el carácter
de salto de línea del sistema
En la siguiente tabla
se recogen los caracteres de Conversión. Cuando aparecen en mayúsculas tienen
el mismo significado que en minúsculas, pero convierten el resultado a
mayúsculas como si se estuviera invocando a String.toUpperCase()
Conversión
|
Categorías
|
Descripción
|
'b', 'B'
|
general
|
Si el argumento es null,
el resultado es "false".
Si es boolean o Boolean,
el resultado es la cadena devuelta por String.valueOf(arg).
En otro caso el resultado es "true".
|
'h', 'H'
|
general
|
Si el argumento es null,
el resultado es "null". En
otro caso, el resultado se obtiene invocando a Integer.toHexString(arg.hashCode()).
|
's', 'S'
|
general
|
Si el argumento es null,
el resultado es "null". Si
el argumento implementa Formattable, entonces se invoca arg.formatTo.
En otro caso el resultado se obtiene invocando a arg.toString().
|
'c', 'C'
|
carácter
|
El resultado es un carácter Unicode
|
'd'
|
entero
|
El resultado es formateado como un entero en base decimal
|
'o'
|
entero
|
Es formateado como un entero en base octal
|
'x', 'X'
|
entero
|
Es formateado como un entero en base hexadecimal
|
'e', 'E'
|
coma
|
Es formateado como un número decimal en notación
científica
|
'f'
|
flotante
|
Es formateado como un número decimal
|
'g', 'G'
|
coma flotante
|
Es formateado con formato decimal o con notación
científica, dependiendo de la precisión y del valor después del redondeo
|
'a', 'A'
|
coma flotante
|
Es formateado como un número hexadecimal en coma flotante
con una mantisa y un exponente
|
't', 'T'
|
fecha/hora
|
Prefijo para los caracteres de conversión de fecha y hora.
|
'%'
|
tanto por ciento
|
El resultado es el literal '%' ('\u0025')
|
'n'
|
salto de línea
|
El resultado es el salto de línea de la plataforma
|
Conversiones de fecha/hora
Los caracteres de la
siguiente tabla están definidos como sufijos de los caracteres de conversión 't' y 'T'.
Para
formatear horas:
'H'
|
Hora, con dos dígitos, de 00
a 23.
|
'I'
|
Hora, con dos dígitos, de 01
a 12.
|
'k'
|
Hora, con formato de 0 a 23.
|
'l'
|
Hora, con formato de 1 a 12.
|
'M'
|
Minutos, con dos dígitos, de 00
a 59.
|
'S'
|
Segundos, con dos dígitos, de 00
a 60 (60" es
un valor especial para soportar los saltos).
|
'L'
|
Milisegundos, con tres dígitos, de 000
a 999.
|
'N'
|
Nanosegundos, con 9 dígitos, de 000000000
a 999999999.
|
'p'
|
Especificador local para indicar tarde o mañana, por
ejemplo "am" o "pm".
|
'z'
|
|
'Z'
|
Una cadena representando la abreviatura de la zona horaria.
|
's'
|
Segundos transcurridos desde el 1 de enero de 1970 00:00:00 UTC
|
'Q'
|
Milisegundos desde el 1 de enero de 1970 00:00:00 UTC
|
Para
formatear fechas:
'B'
|
Cadena con el nombre completo del mes
|
'b'
|
Cadena con la abreviatura del nombre del mes
|
'h'
|
Igual que 'b'
|
'A'
|
Cadena con el nombre completo del día de la semana
|
'a'
|
Cadena con la abreviatura del nombre del día de la semana
|
'C'
|
Año, con dos dígitos, de 00 a 99,obtenidos
dividiendo el año completo entre 100
|
'Y'
|
Año, formateado con al menos 4 dígitos
|
'y'
|
Últimos 2 dígitos del año, con valores de 00
a 99
|
'j'
|
Día del año, con tres dígitos de 001
a 366
|
'm'
|
Mes, con dos dígitos de 01 a 12
|
'd'
|
Día del mes, con dos dígitos, de 01
a 31
|
'e'
|
Día del mes, de 1 a 31
|
Para formatear conjuntos de fecha y hora:
'R'
|
Hora, con formato 24 horas, como "%tH:%tM"
|
'T'
|
Hora, con format 24 horas, como "%tH:%tM:%tS"
|
'r'
|
Hora, con formato 12 horas, como "%tI:%tM:%tS
%Tp"
|
'D'
|
Fecha, con formato "%tm/%td/%ty"
|
'F'
|
Fecha, con formato "%tY-%tm-%td"
|
'c'
|
Fecha y hora, con formato "%ta
%tb %td %tT %tZ %tY"
|
Flags
Flag
|
General
|
Carácter
|
Entero
|
coma
flotante
|
Fecha/Hora
|
Descripción
|
'-'
|
X
|
X
|
X
|
X
|
X
|
El resultado se ajustará a la izquierda
|
'#'
|
X1
|
-
|
X3
|
X
|
-
|
El resultado utilizará una forma alternativa de conversión
|
'+'
|
-
|
-
|
X4
|
X
|
-
|
El resultado siempre incluirá un signo
|
' '
|
-
|
-
|
X4
|
X
|
-
|
El resultado incluirá un espacio inicial para los valores
positivos
|
'0'
|
-
|
-
|
X
|
X
|
-
|
El resultado será rellenado con ceros
|
','
|
-
|
-
|
X2
|
X5
|
-
|
El resultado incluirá los separadores definidos en la
configuración local
|
'('
|
-
|
-
|
X4
|
X5
|
-
|
Aparecerán los número negativos entre paréntesis
|
2 Sólo para 'd'
3 Sólo
para 'o', 'x', y 'X'
4 Para 'd', 'o', 'x', y 'X' aplicado a BigInteger, o 'd' aplicado a byte, Byte, short, Short, int, Integer, long, y Long
5 Sólo
para 'e', 'E', 'f', 'g', y 'G'
No hay comentarios:
Publicar un comentario