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

简述java中equals()方法和==的区别

时间:2018-02-22 19:38:18      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:pos   als   style   -128   oat   www   参数   href   float   

==equals的主要区别是:

==:

  • ==常用于比较原生类型(基本数据类型):byte,short,char,int,long,float,double,boolean,比较的是他们的值。
  • 若用==来比较两个对象,则比较的是这两个对象的内存地址。因此,除非是同一个new 出来的对象,比较结果为true,不同对象用==比较都是false。
  • 但是,对于拥有缓存机制的对象,例如Integer、Byte 、Short 、Long、 Character对象(目前就知道这几个对象),在其缓存范围内,是可以用==比较出正确的结果的。具体范围是:Integer、Byte,Short,Long 固定范围是:-128 到 127;Character 固定范围是 0 到 127。除了 Integer 可以通过参数改变范围外,其它的都不行。 具体可见我转发的博文理解Java Integer的缓存策略【转】

equals()方法:

在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,源码如下:

public boolean equals(Object obj) {
        return (this == obj);
}

因此,对于没有重写过equals()方法的对象来说,使用equals()进行比较和用==进行比较效果相同,都是比较内存地址

但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。因此,当我们创建自己的类的时候,若要将此类进行比较,一定要重写equals()方法

简述java中equals()方法和==的区别

标签:pos   als   style   -128   oat   www   参数   href   float   

原文地址:https://www.cnblogs.com/SzBlog/p/8459603.html

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