equals()和==之间的区别

二者在具体含义上还是有很大的区别的,equals()方法存在与Object类中,它是用来检查对象的状况是否相等,也就是说对象里面的内容是否相等。然而,==操作符是检查两个实例是否相等。

例如,有两个String实例,它们分别指向两个不用的引用s1和s2,如下所示:    

s1 =newString("abc");
s2 =newString("abc");

现在,你如果使用equals()来检查二者是否相等,如下所示:

if(s1.equals(s2))
     System.out.println("s1.equals(s2) is TRUE");
else
     System.out.println("s1.equals(s2) is FALSE");

返回值将是s1.equals(s2) is TRUE.

让我们使用==操作符试一下:

if(s1==s2)
     System.out.printlln("s1==s2 is TRUE");
else
     System.out.println("s1==s2 is FALSE");

现在,你得到的结果将是s1==s2 is FALSE.因为二者虽然对象的内容一样,但是指向不同的引用对象。每次调用new string()的时候,都会新建一个对象。

现在,使用==操作符运行下面的代码:

String s1 ="abc";
String s2 ="abc";

你将得到s1==s2 is TRUE.的结果。一般来说,对象是在内存中创建,当你创建一个对象的时候,也就是说:

Object ob1 =newSomeObject();
Object ob2 =newSomeObject();

假设我们有两个内容一样的对象,我们依然会有两个引用,比如,ob1的地址是0×1234,ob2的地址为0×2345,如果二者的对象内容一样,但是二者的引用不一样。使用==操作符,比较的是引用,所以二者比较的结果是FALSE.从另一方面来讲,object.equals()方法比较的是二者的对象值。注意,为了让这个比较正常进行,类中的equals应该明确的重载。

原文地址http://www.javabeat.net/2013/02/what-is-difference-between-equals-and/

2 thoughts on “equals()和==之间的区别”

  1. String s1 =”abc”;
    String s2 = new String(“abc”);

    想深入看看这个,呵呵。

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>