zoukankan      html  css  js  c++  java
  • java中==和equals的区别

    本文非原创,参考链接 http://www.cnblogs.com/smyhvae/p/3929585.html

    ==

    基本数据类型:比较的是值

    引用数据类型:比较的是堆内存地址,他们在内存中的存放地址

    注意:如果是同一个new出来的对象(在堆内存中是同一个区域),比较的结果为true,否则为false,因为每new一次,都会重新开辟堆内存空间

    equals

    不能用于基本数据类型比较,继承于Object这个超类,只有引用数据类型才有equals方法。

    默认情况下比较的堆内存地址值,一般在一些类中该方法被重写,比较对象的成员变量值是否相同。

    在Object类中定义了一个equals的方法,equals的源码是这样写的

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

    可以看到,这个方法的初始默认行为是比较对象的内存地址值,一般来说,意义不大。所以,在一些类库当中这个方法被重写了,如String、Integer、Date。在这些类当中equals有其自身的实现(一般都是用来比较对象的成员变量值是否相同),而不再是比较类在堆内存中的存放地址了。

    对于引用型变量进行equals比较,在没有重写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,跟双等号(==)的结果相同;如果被重写,按照重写的要求来。

  • 相关阅读:
    maven
    in 和 or 的效率问题
    mac 安装homobrew 报错解决
    卷积的本质及物理意义
    java 多线程 day18 ThreadPoolExecutor
    打jar包
    科三保佑贴
    【问题解决】-《java.lang.NoClassDefFoundException》
    POS-商户手续费-从生活剖析,通俗易懂
    关于荒废空闲时光的思考
  • 原文地址:https://www.cnblogs.com/benjieqiang/p/11221751.html
Copyright © 2011-2022 走看看