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

       ==  比较两个操作数的值之间的关系

      equals是基类Object下的方法,用来比较两个对象的引用是否相等,即是否指向同一个对象(equals无法作用于基本数据类型)。

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      1.java中有8中基本数据类型 byte、int(2 byte)、short(4 byte)、long(8 byte)、float(4 byte)、double(8 byte)、char(2 byte)、boolean。在基本数据类型中,变量直接存储的是 “值”。

    int n = 10;
    int m = 10;
    System.out.println(n==m);          //返回true
    System.out.println(n.equals(m)); //报错:基本数据类型无法使用equals

      n,m是基本数据类型,所以 == 比较的是n,m值本事,即 10 == 10。

      

      2.而对于非基本数据类型的变量,引用类型变量,如String,包装类等。(Java 语言为每一个内置数据类型提供了对应的包装类:Integer、Long、Byte、Double、Float、Short都是抽象类 Number 的子类。) 引用类型的变量存储的并不是 “值”本身,而是于其关联的对象在内存中的地址。所以 == 操作符比较的是两个地址,而String,包装类等很多对euqals进行了重写,使其比较的是数据所指向的地址中的内容。

    Integer a = 127;
    Integer b = 127;
    System.out.println(a==b);        //返回 true :Java 会对 -127~127 的整数进行缓存,引用类型变量一般不用 == 进行判等
    System.out.println(a.equals(b)); //返回 true

    Integer c = 128; Integer d = 128; System.out.println(c==d); //返回 false System.out.println(c.equals(d)); //返回 true

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    总结:

    1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

              如果作用于引用类型的变量,则比较的是所指向的对象的地址。

    2)对于equals,注意:equals方法不能作用于基本数据类型的变量

        如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

        诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

  • 相关阅读:
    省市县区镇街道可查询地址
    用代码实现表情包
    如何让input number类型的标签不产生上下加减的按钮
    float类型如何转换为string类型
    php 如何得到不含前导0的时分秒
    项目引入非配置的文件,打成war包后测试报错的可能原因
    Spring Cloud(十四)Config 配置中心与客户端的使用与详细
    Spring Cloud (十三) Zuul:静态路由、静态过滤器与动态路由的实现
    Spring Cloud(十二)声名式服务调用:Feign 的使用(下)
    Spring Cloud(十一)声名式服务调用:Feign的使用 (上)
  • 原文地址:https://www.cnblogs.com/Janine-S/p/8125396.html
Copyright © 2011-2022 走看看