zoukankan      html  css  js  c++  java
  • java中的==和equals()

    ==和equals()都是比较相等的,那有什么区别和联系

    1:基本类型(primitive types), 共有8种,即int, short, long, byte, float, double, boolean, char

    使用==比较基本数据类型时比较的是数值是不是相等;

    例如:

     1 package equals;
     2 
     3 public class Test {
     4     public static void main(String[] args) {
     5         int a=3;
     6         int b=4;
     7         int c=3;
     8         b=c;
     9         System.out.println(a==c);
    10         System.out.println(a==b);
    11     }
    12 }

    因为基本数据类型是在栈中的,理解堆栈就好理解这个问题,具体参考我的另一篇博客》》》堆栈     http://www.cnblogs.com/GH0522/p/8193650.html

     那么当比较两个对象的时候比较的是 对象在内存的位置

     1 package equals;
     2 
     3 public class Test2 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         Double d = new Double(12.2);
     8         Double d2 = new Double(12.2);
     9         System.out.println(d==d2);
    10         
    11     }
    12 }

     因为这两个对象在堆中都拥有一个不同的地址虽然里面放的数值是一样的;

    JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。例如String重写的equals方法就是比较内存中存放的值。

     1 package equals;
     2 
     3 public class Test2 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         String a=new String("a");
     8         String b=new String("a");
     9         System.out.println(a==b);
    10         System.out.println(a.equals(b));
    11     }
    12 }

     

     看其String类中被重写的equals

     

    没被重写的Object中的equals则是实现自==

     

  • 相关阅读:
    洛谷 P3128 [ USACO15DEC ] 最大流Max Flow —— 树上差分
    洛谷 P3953 [ NOIP 2017 ] 逛公园 —— 最短路DP
    bzoj 3231 [ Sdoi 2008 ] 递归数列 —— 矩阵乘法
    bzoj 1024 [ SCOI 2009 ] 生日快乐 —— 递归
    hdu 5823 color II —— 子集DP
    bzoj 1093 [ ZJOI 2007 ] 最大半连通子图 —— 拓扑+DP
    洛谷 P3959 NOIP2017 宝藏 —— 状压搜索
    最短路(模板
    线段树 扫描线
    Dijkstra算法
  • 原文地址:https://www.cnblogs.com/GH0522/p/8215553.html
Copyright © 2011-2022 走看看