==:是一个运算符
可以使用在基本类型变量和引用数据类型变量中
基本数据类型是比较的两个变量保存的数据是否相等
引用数据类型比较的是两个对象的地址值
equals:是一个方法
可以使用在引用数据类型变量中
如果是自定义的对象,equals调用的是object下的equals
源码为:
public boolean equals(Object obj) {
return (this == obj);
}
可知比较的也是两个对象的地址值
如果是引用类型的关键字创建的对象
如String a=new String("kk");
String a1=new String("kk");
System.out.println(a.equals(a1));
java.lang.String源码如下
public boolean equals(Object anObject) {
//比较你调用的对象和形参的对象地址值
if (this == anObject) {
//相同直接输出true
return true;
}
//如果形参对象是String类型的
if (anObject instanceof String) {
//进行强转String类型
String anotherString = (String)anObject;
//定义一个n长度
int n = value.length;
//n和形参长度比较
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;
}
这个比较的就是内容
比较一下长度,还有内容值
可以看一下equalsTest
运算符==和equals的比较
像包装类 String Date file等都重写了object下的equals,所以比较的是两个对象的“实体内容”是否相同
如果我们的自己定义的对象也想比较实体内容那就重写equals