事实证明包装类都重写了toString方法。我们在直接打印的时候,就会去调用这个参数对象的toString方法。
我们在直接打印一个包装类对象的时候,就回去调用这个对象的toString方法,因为包装类对象都重写了这个方法,所以打印出来的是这个对象内容。
String 重写后的toString源码:
public static String toString(int i) {
if (i == Integer.MIN_VALUE)
return "-2147483648";
int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
char[] buf = new char[size];
getChars(i, size, buf);
return new String(buf, true);
}
String类重写equals方法源码:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
通过遍历整个字符串的每一个字符进行比较,来比较两个字符串是否相等。
Integer重写equals方法源码分析:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
将传入的参数,如果判断是整数,就转成数字然后进行数字之间的等值比较(Integer之间进行等值比较,会有拆箱装箱);