话不多说,先上硬菜:
- == 既可以比较基本类型也可以比较引用类型:对于基本类型就是比较值,对于引用类型就是比较内存地址
- equals是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是 = = == ==;我们知道String等类的equals方法是被重写过的,具体要看自定义类里有没有重写Object的equals方法来判断,在实际应用中,我们一般用equals来比较字符串的值
目录
一、==
作用:只用来比较两个变量的值是否相等,即用于比较变量所对应的内存中所存储的数值是否相同,如果
=
=
==
==两边的是对象,即比较的是变量存放的对象的内存地址
,判断这两个引用是否指向堆中的同一块内存,实际上是指针操作
二、equals()
equals() 方法用于将字符串与指定的对象比较
👌Object equals()
Object equals() 方法用于比较两个对象是否相等
,是判断两个对象引用指向的是同一个对象
,即比较 2 个对象的内存地址是否相等
- 语法:object.equals(Object obj)
- 参数:obj - 要比较的对象。
- 返回值:如果两个对象相等返回 true,否则返回 false
在Object类中方法为:
public boolean equals(Object obj) {
return (this == obj);
}
👌String equals()
String equals() 方法用于比较两个字符串的内容是否相等
- 语法:public boolean equals(Object anObject)
- 参数:anObject – 与字符串进行比较的对象。
- 返回值:如果给定对象与字符串相等,则返回 true;否则返回 false
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;
}