== 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址equals属于java.lang.Object类里面的方法,如果该方法没有被重写过默认与==功能相同。String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。具体要看自定义类里有没有重写Object的equals方法来判断。通常情况下,重写equals方法,会比较类中的相应属性是否都相等。