String 重写 toString 和 equals源码分析
事实证明包装类都重写了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之间进行等值比较,会有拆箱装箱);
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
