-
== 是栈中的值比较
如果是基本类型来说,比较的是值是否相等;如果是引用类型,那么比较的就是对象引用地址是否相等(往往比较的是不是同一个堆中的对象)
Object 源码中equals
public boolean equals(Object obj) { return (this == obj); }
-
equals是逻辑内容上的比较;
String 源码中equals
public boolean equals(Object anObject) { // 对象引用相同直接返回 true if (this == anObject) { return true; } // 判断需要对比的值是否为 String 类型,如果不是则直接返回 false if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { // 把两个字符串都转换为 char 数组对比 char v1[] = value; char v2[] = anotherString.value; int i = 0; // 循环比对两个字符串的每一个字符 while (n-- != 0) { // 如果其中有一个字符不相等就 true false,否则继续对比 if (v1[i] != v2[i]) return false; i++; } return true; } } //如果不是String类型,则直接返回false return false; }
网友评论