==与equals的区别
-
== 的作用是判断两个对象的地址是否相等,即判断两个对象是否为同一个对象(基本数据类型比较的时值,引用数据类型比较的是地址)
-
equals定义在Object.java中,所以所有Java类都包含了equals方法。作用也是判断两个对象是否相等,但是分一下两种情况:
- 类没有重写equals方法,效果与==相同
- 类重写了equals方法,一般我们覆盖后都用来比较两者的值
注意:
- String类中重写equals方法,因此比较的是对象的值,未重写时比较的是对象的地址。
- 当创建String类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋值给当前引用。如果没有就在常量池中创建一个String对象