再来看一下还有几个跟toString差不多的方法,分别是toHexString,toOctalString,toBinaryString,顾名思义,就是转成十六进制/八进制/二进制形式的字符串,源码如下:
public static String toHexString(int i) {
return toUnsignedString0(i, 4);
}
public static String toOctalString(int i) {
return toUnsignedString0(i, 3);
}
public static String toBinaryString(int i) {
return toUnsignedString0(i, 1);
}
可以看到这三个方法其实都是以不同的参数调用了toUnsignedString0这个方法,那我们就来仔细地分析一下这个方法:
private static String toUnsignedString0(int val, int shift) {
// assert shift > 0 && shift <=5 : "Illegal shift value";
int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val);
int chars = Math.max(((mag + (shift - 1)) / shift), 1);
char[] buf = new char[chars];
formatUnsignedInt(val, shift, buf, 0, chars);
// Use special constructor which takes over "buf".
return new String(buf, true);
}
static int format