Alguem conhece a sintaxe pra fazer formação com printf?

o q é esse % ? aliás alguém pode me ajudar a enteder essa sintaxe?

public static void main(String[] args) { int i1 = -123; System.out.printf(">%1$(7d< \n",i1); }

imprimi isso:

(123)<

alguém usa?

A classe Formatter especifica o que você quer saber. Veja o Javadoc.

http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html

[]´s

Dados formatados sempre começaram com um símbolo de porcentagem (%).

% [arg_index$] [flags] [width] [.precisao] conversão

Somente % e a conversão são obrigatórios.

flags:

  • : Justifica o argumento a esquerda.
    +: Inclui um sinal de +.
    0: Preenche os vazios deste argumento com zeros.
    ; : Coloca uma virgula.
    ( : Coloca número negativo entre parênteses.

width - Alinha suas saídas. Serve para deixar os dados na mesma “coluna”.

precision - Usando com argumento float/double, indica o número de dígitos a serem exibidos depois do ponto decimal.

conversão - O tipo de argumento que estou formatando. (OBRIGATORIO)
ex:
d - int
c - char
f - float point
b - boolean - (retorna true para tudo que não for booleano)
s - String

	public static void main(String[] args) {
		int i1 = -123;
		System.out.printf(">%1$(7d< \n", i1);
		/*
		 * sendo assim: ele simplismente referência i1 com 1$, coloca entre
		 * parênteses com (, e diz com o 7 que a saída ficará em uma coluna,
		 * por exemplo "    10", o 7 representa o espeço em branco. finalmente
		 * ele usa o caracter de conversão obrigatório d que tem que ser o mesmo
		 * do segundo argumento, nesse caso um int.
		 */
	}

Bons estudos, espero ter ajudado !