当我写System.out.println(0123);
,我得到83
不过System.out.println((int)0123F);
打印123
.
它为什么这样工作?
0123表示八进制 123,即1*8*8 + 2*8 + 3,等于83.由于某种原因,八进制浮点数不可用.
创建0123表示整数83.创建0123F表示浮动123.当转换回整数时,它仍然是123.
如果你不是指八进制,就不要使用前导0.毕竟,它们并不完全有用(并且当他们看到09F时,了解八进制数的程序员会感到困惑).
因为以0
字母开头的整数文字被视为八进制数.
参见JLS的 3.10.1节
试试这个:
public static String leftPad(int n, int padding) { return String.format("%0" + padding + "d", n); } leftPad(5, 3); // return "005" leftPad(15, 5); // return "00015" leftPad(224, 3); // return "224" leftPad(0, 4); // return "0000"