They are formatting String. The Java specific syntax is given in java.util.Formatter.
The general syntax is as follows:
   %[argument_index$][flags][width][.precision]conversion
%02d performs decimal integer conversion d, formatted with zero padding (0 flag), with width 2. Thus, an int argument whose value is say 7, will be formatted into "07" as a String.
You may also see this formatting string in e.g. String.format.
Commonly used formats
These are just some commonly used formats and doesn't cover the syntax exhaustively.
Zero padding for numbers
System.out.printf("Agent %03d to the rescue!", 7);
// Agent 007 to the rescue!
Width for justification
You can use the - flag for left justification; otherwise it'll be right justification.
for (Map.Entry<Object,Object> prop : System.getProperties().entrySet()) {
    System.out.printf("%-30s : %50s%n", prop.getKey(), prop.getValue());
}
This prints something like:
java.version                   :                                 1.6.0_07
java.vm.name                   :               Java HotSpot(TM) Client VM
java.vm.vendor                 :                    Sun Microsystems Inc.
java.vm.specification.name     :       Java Virtual Machine Specification
java.runtime.name              :          Java(TM) SE Runtime Environment
java.vendor.url                :                     http://java.sun.com/
For more powerful message formatting, you can use java.text.MessageFormat. %n is the newline conversion (see below).
Hexadecimal conversion
System.out.println(Integer.toHexString(255));
// ff
System.out.printf("%d is %<08X", 255);
// 255 is 000000FF
Note that this also uses the < relative indexing (see below).
Floating point formatting
System.out.printf("%+,010.2f%n", 1234.567);
System.out.printf("%+,010.2f%n", -66.6666);
// +01,234.57
// -000066.67
For more powerful floating point formatting, use DecimalFormat instead.
%n for platform-specific line separator
System.out.printf("%s,%n%s%n", "Hello", "World");
// Hello,
// World
%% for an actual %-sign
System.out.printf("It's %s%% guaranteed!", 99.99);
// It's 99.99% guaranteed!
Note that the double literal 99.99 is autoboxed to Double, on which a string conversion using toString() is defined.
n$ for explicit argument indexing
System.out.printf("%1$s! %1$s %2$s! %1$s %2$s %3$s!",
    "Du", "hast", "mich"
);
// Du! Du hast! Du hast mich!
< for relative indexing
System.out.format("%s?! %<S?!?!?", "Who's your daddy");
// Who's your daddy?! WHO'S YOUR DADDY?!?!?
Related questions