String s = String.format("%04d", i);
This code stands for 4 digits in a number to string so.. if u use %04d i will get two trialing zeros up front
Though int i is a primitive and its expecting object as its argument,
its JVM will takes care internally to converts into object data type
see this as per java implementation ..
public static String format(String format, Object ... args) {
return new Formatter().format(format, args).toString();
}
Sample code for appending zeros dynamically...
import java.text.DecimalFormat;
public class ArrayTest {
public static void main(String[] args) {
int i = 34; //could be any value but you get the idea
int zeroCount = 2;
String s = String.format("%d", i);
int length = s.length()+zeroCount;
System.out.println(String.format("%0"+length+"d", i));
// second way u can achieve
DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setMinimumIntegerDigits(length);
System.err.println(decimalFormat.format(i));
}
}
And coming to the arguments of System.format it can take infinite no. of parameters as its a varargs object as second parameter
Check this url
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format%28java.lang.String,%20java.lang.Object...%29