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方法进行了重写的话,比较的是所指向的对象的内容。

  • 相关阅读:
    如何判断两个IP是否在同一网段
    http://blog.csdn.net/a9529lty/article/details/6454156
    http://blog.csdn.net/a9529lty/article/details/6454145
    tomcat下配置https环境(windows环境)
    hosts文件配置及主要作用
    函数y=sin(1/x)曲线
    求证:a^4+b^4 ≧a^3*b+a*b^3
    三种双二次曲线
    已知m和n是两个整数,并且m^2+mn+n^2能被9整除,试证m,n都能被3整除。
    x为正变数,求y=x^3/(x^4+4)的最大值
  • 原文地址:https://www.cnblogs.com/Janine-S/p/8125396.html
Copyright © 2011-2022 走看看