== 和equals的区别
-
==既可以比较基本数据类型也可以比较引用数据类型。对于基本数据类型就是比较值。对于引用数据类型比较的时内存地址。
-
equals的话,它是属于java.lang.Object类里面的方法。如果该方法没有被重写过默认也是==。我们可以看到String等类的equals方法是被重写过的,而且在String类在日常开发中用的比较多,久而久之形成了equals是比较值的错误观点。
-
具体要看自定义类有没有重写Object类的equals方法,然后再判断。
-
通常情况下,重写equals方法,会比较类中相应属性是否都相等。
==:运算符
- 可以使用在基本数据类型中,也可以使用在引用类型变量中
2、如果比较的是基本数据类型的变量:比较两个变量的数据是否相等(不一定类型要相同)
如果比较的是引用数据类型的变量:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
补充:==符号的使用时,必须保证左右两边的数据类型保持一致
equals()的使用
-
equals是一个方法,不是运算符
-
只能适用于引用数据类型
-
Object 类中equals的定义
public boolean equals(Object obj){
return (this == object);
}
说明:Object类中定义的equals和==的作用是一样的:比较两个对象的地址值是否相同。即两个引用是否指向同一个对象实体
-
像String、Date、File、包装类等都重写了object类的equals方法,重写之后比较的不是两个引用地址是否相同,而是比较两个对象的实体内容是否相同。
-
通常情况下,我们自定义类使用equals方法,也通常是比较两个实体内容是否相同。就需要对object类的equals方法进行重写。