码迷,mamicode.com
首页 > 编程语言 > 详细

java中的 equals 与 ==

时间:2016-08-19 13:06:50      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

  Java中的"=="永远比较的是两个对象是否是同一个对象(引用指向同一块内存就是同一个对象)

  Java中equals() 在使用必须与类挂上钩,不能单独使用。有的人这样理解"==比较的是对象,而equals()方法比较的是内容(即对象里面的属性)"。

  其实,Java中的equals作为一个方法,我们不能脱离了类来单独讨论它:

  equals()方法是来自于Object类的,源码如下: 

  public boolean equals(Object obj)

  {

        return this == obj;

  }  

  Object类中的equals方法与==功能是一模一样的:比较两个对象是否是同一个对象。只是,作为Object子类的String类为了符合自身的特质,重写了Object类的equals方法,重写后的效果是:如果两个String对象的值相同,那么调用equals方法返回true,否则返回false。

  

  下面演示代码: 

  public class Test

   {

       public static void main(String[] args)

      {

            String str1 = "hello";

                String str2 = new String("hello");

                String str3 = new String("hello");

                String str4 = str3;//与str3是同一个对象

       System.out.println(str1 == str2);//false,不是同一个对象

           System.out.println(str2 == str3);//false,不是同一个对象

           System.out.println(str3 == str4);//true,是同一个对象

                System.out.println(str1.equals(str2));//true,值(属性)相同

            System.out.println(str2.equals(str3));//true,值(属性)相同 

 

          A a1 = new A();

          A a2 = new A();

           System.out.println(a1 == a2);//false,不是同一个对象

               System.out.println(a1.equals(a2));//false 因为没有重写equals方法,所以直接调用Object的equals方法(等同于==),所以错误(因为不是同一对象)

         }

     }

  class A

  {}

  Java中,所有基本数据类型的实现类都按照String类的方式重写了equals方法,这些类都符合”==比较对象,equals比较值“这一结论。

  如果一个类是你自己定义的,那么如果你不重写equals方法,它还是默认比较对象。(直接调用Object类中的方法)

  参考链接:http://jingyan.baidu.com/article/f96699bbc9d6ae894e3c1b81.html

java中的 equals 与 ==

标签:

原文地址:http://www.cnblogs.com/aikaiqiang/p/5787149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!