0 means to pad zeros to the output
and # means Argument is represented in an "alternate form." This depends on the conversion type:
%o Non-negative octal values are prepended with a zero ('0').
%x, %X Hexadecimal values are prepended with the prefix "0x" or "0X".
%e, %E, %f The integer portion of the result always ends with a decimal point ('.'), even if the fractional portion is zero.
%g, %G The fractional portion always appears, even if it is zero.
%c If the character is special or unprintable, it is output in an escaped form. The output can be surrounded by single quotes to form a syntactically valid
Java character literal.
There is no alternate form for %s, %d, %u, %z[n], and %Z[n]