一、对象类型不同
1、equals(): 是超类Object中的方法
2、==: 是操作符
二、比较的对象不同
1、equals(): equals是Object中的方法,在Ojbect中equals方法实际“return (this == obj)”,用到 “==”,如果对象不重写equals方法,
实际该对象的equals和“==”作用是一样的,都是比较的地址值(因为“==”比较的就是地址值);重写equals方法用来检测两个对象是否相等,
即两个对象的内容是否相等,例如:String就重写了equals方法,用来比较两个字符串内容是否相同。
2、==:比较的是地址值;比较的是变量(栈)内存中存放的(堆)内存地址,用来判断两个对象的地址是否相同,即是否指向相同的对象。比较的是真正意义上的指针操作。
三、运行速度不同
1、 ==:运行速度比equals()快,因为 == 只比较引用;
equals源码:
public boolean equals(Object obj){
return (this == obj);
}