首先,==操作符比较的是两个变量的值是否相等,它可以比较两个基本数据类型的值或两个引用变量是否相等。
然后,equals方法的话要分两种情况,一种是没有重写过的equals方法,也就是object类中的equals方法,它是实现也是用==操作符实现的,比较的是两个引用变量的值,也就是比较两个引用变量所指向堆内存中的两个对象的首地址是否相等,也就是说它和==操作符的功能是一样的,只是equals只能比较两个引用类型变量,不能比较基本数据类型变量。
另一种情况是重写过的equals方法,比如String类的equals方法,它重写了object类的equals方法,它实际上比较的是两个String类型变量中的char[]类型成员变量的值是否相等,也就是比较两个String变量的具体值是否相等,而==操作符比较的引用变量所指对象的首地址是否相等,所以这一种情况下的equals方法和==操作符的功能是不一样的。