当遇到这种基础的常问面试题《关于==和equals的区别》,该怎么回答呢?可以这样说equals()方法和==的异同
==:
注:==是一个比较运算符
*基本数据类型比较的是值。
*引用数据类型比较的是对象的地址。
equals()方法:
注:equals()方法是一个判断值内容或地址的方法,继承祖宗类Object()
*如果没有对equals()方法进行重写,则比较的是两个对象的地址。
*被重写后的equals()方法比较的是对象的内容的值。
String类对equals()方法重写的源码如下:
public boolean equals(Object anObject) {
//判断是否同一对象
2 if (this == anObject) {
3 return true;
4 }
//判断是否引用类型
5 if (anObject instanceof String) {
6 String anotherString = (String)anObject;
7 int n = count;
8 if (n == anotherString.count) {
9 char v1[] = value;
10 char v2[] = anotherString.value;
11 int i = offset;
12 int j = anotherString.offset;
//截取两边的字符串内容一 一比对
13 while (n-- != 0) {
14 if (v1[i++] != v2[j++])
15 return false;
16 }
17 return true;
18 }
19 }
20 return false;
21 }