==与equals的区别

  • Post author:
  • Post category:其他


区别主要有如下三点:


一、对象类型不同


1、equals():是超类Object中的方法。从它的源码可以看出,里面使用的就是 == 比较,所以这种情况下比较的就是它们在内存中的存放地址。

//超类中equals的源码
public boolean equals(Object obj) {
return (this == obj);
}

2、==:是操作符。


二、比较的对象不同


1、equals():当两者的内存地址不同时,equals会检测两个对象是否相等,即两个对象的内容是否相等。

2、==:当应用于基本数据类型时,比较的是两者的值是否相等;

当应用于引用类型时,用于比较两者的引用地址是否相等,也可以理解为用于判断两者是否为同一个对象。


三、运行速度不同


1、equals():比==运行速度慢。

2、==:比equals()运行速度快,因为==只是比较引用。

代码实例:

public class different {
    public static void main(String[] args){
        //定义一个String类型并把该变量存放在常量池里
        String s = "abcd";
        //定义一个新的String类型变量S1并通过new的方式已经开辟了新的堆内存
        String s1 = new String("abcd");
        //此时s和s1的内容相同,但是地址不同
            System.out.println(s==s1);
            System.out.println(s.equals(s1));
    }
}
/*运行结果:false
           true
  首先根据代码可知s和s1两者内容相同,但是地址不同,
  在引用类型中,==用于判断两者的引用地址是否相等,
  即两者是否为同一个对象,很显然两者不是,故第一个
  输出结果为false;equals而 equals 方法当两者
  存放的内存地址不同时,会比较两者的值,两者的值都
  是 "abcd" ,所以 s.equals(s1) 为 true。*/



版权声明:本文为weixin_54645719原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。