aa.toString();方法打印出来的不是乱码,是内存地址。
因为java里面的所有类默认的继承Object,所以这里调用的是Object的toString()方法。
如果你看了源码就明白为什么这么打印了:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
这里还调用了Integer类中的方法:
public static String toHexString(int i) {
return toUnsignedString(i, 4);
}
private static String toUnsignedString(int i, int shift) {
char[] buf = new char[32];
int charPos = 32;
int radix = 1 << shift;
int mask = radix - 1;
do {
buf[--charPos] = digits[i & mask];
i >>>= shift;
} while (i != 0);
return new String(buf, charPos, (32 - charPos));
}
|