注 此篇为jdk1.7中的源码解析
equals()方法中的判断分一下步骤
1先判断内存地址是否相同 如果内存地址相同 那么字符串就是相同的 返回true
2 判断当前字符串和参数字是否属于同一类 如果不相等 返回false
3比较字符串长度(也就是char[]数组)是否相等 不相等返回false
4 逐个字符比较 如果不相等 返回false
下面贴上源码
public boolean equals(Object anObject) { if (this == anObject) {// 1先判断内存地址是否相同 如果内存地址相同 那么字符串就是相同的 返回true return true; } if (anObject instanceof String) {//2 先判断当前字符串和参数字是否属于同一类 String anotherString = (String) anObject; int n = value.length; if (n == anotherString.value.length) {//3比较字符串长度(也就是char[]数组)是否相等 不相等返回false char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) //4 逐个字符比较 return false; i++; } return true; } } return false; }
此篇为个人原创 如有雷同 纯属巧合 如有错误 请各位提醒
如若转载 请注明出处