Java(一)equals与==区别

==: 它的作用是判断两个对象地址是不是相等。即判断两个对象是不是同一个对象。(对于基本类型,==比较的是。对于引用数据类型,==比较的是内存地址)。

equals():它的作用也是判断两个对象是否相等。一般有两种情况:

  • 情况1:类没有覆盖equals()方法。则通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。
  • 情况2:类覆盖了equals()方法。一般,我们都覆盖equals()方法来比较两个对象的内容是否相等;若内容相等,则返回ture。
    例如:
public class test1 {
 public static void main(String[] args) {
 String a = new String("ab"); // a 为⼀个引⽤
 String b = new String("ab"); // b为另⼀个引⽤,对象的内容⼀样
 String aa = "ab"; // 放在常量池中
 String bb = "ab"; // 从常量池中查找
 if (aa == bb) // true
 System.out.println("aa==bb");
 if (a == b) // false,⾮同⼀对象
 System.out.println("a==b");
 if (a.equals(b)) // true
 System.out.println("aEQb");
 if (42 == 42.0) { // true
 System.out.println("true");
 }
 }
}
  • String 中的 equals ⽅法是被重写过的,因为 String 的 equals ⽅法比较的是对象的值。

  • 当创建 String 类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引⽤。如果没有就在常量池中重新创建⼀个 String 对象,所以aa和bb是相同对象的引用。

  • 42和42.0用==比较的是值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。