Java中equals和==的那些事

来源:互联网 发布:2016双色球预测软件 编辑:程序博客网 时间:2024/06/05 07:44

今天再复习的时候,老师特意讲解了一下Java当中的equals以及==这两者的区别,通过老师的讲解以及自己的理解,更正了自己以前的很多错误,下面自己做下记录,为以后的回顾打好基础。
老师给的PPT
正如文中所说,equals方法是Object类当中的一个方法,又来比较两者之间的关系。因为所有的类都是Object的直接子类或者间接子类,所以每个类都能够使用上equals这个方法。下面,附上一张Java源码当中Object类中的equals方法的详细代码
Java中的源码
可以看出,equals方法在没有经过重写的时候是使用的 == 进行判断的,它比较的就是两者之间的引用类型。(在我而言,就是比较的两者在内存中的地址)。所以,在没有重写equals方法的时候,这个方法和==的作用效果是一样的。然后==用于比较基本数据类型(byte、short、int、long、float、double、char、boolean)时可以当作是算数符号,就跟比较值的时候是一样的。然后==不仅仅能够比较基本数据类型,比较起引用类型也是可以的。下面是我简单写的一个例子:
自己的测试例子
可以看到,执行==过后是打印的二者不想等。这是因为什么?因为new。只要你是new的一个新的对象,那么系统将自动为你在内存中新分配一块地址,那么==判断引用类型的时候就会发现二者的地址是不一样的。所以二者会被判定为不相等。然后我们进行equals方法进行判断。因为String类中是自己重写了equals函数(这里我不再赘述,请读者自行查看源码),所以判定二者在内容上是相等的。
好了,这就是今天大概纠正的地方,希望对大家也有点帮助!

原创粉丝点击