zoukankan      html  css  js  c++  java
  • Java 中equals和==差别

    java中的数据类型,可分为两类: 
    1.基本数据类型。也称原始数据类型。byte,short,char,int,long,float,double,boolean 
      他们之间的比較,应用双等号(==),比較的是他们的值。 
    2.复合数据类型(类) 
      当他们用(==)进行比較的时候。比較的是他们在内存中的存放地址,所以。除非是同一个new出来的对象,他们的比較后的结果为true。否则比較后结果为false。 JAVA其中全部的类都是继承于Object这个基类的。在Object中的基类中定义了一个equals的方法。这种方法的初始行为是比較对象的内存地址。但在一些类库其中这种方法被覆盖掉了。如String,Integer,Date在这些类其中equals有其自身的实现。而不再是比較类在堆内存中的存放地址了。
      对于复合数据类型之间进行equals比較。在没有覆写equals方法的情况下,他们之间的比較还是基于他们在内存中的存放位置的地址值的,由于Object的equals方法也是用双等号(==)进行比較的,所以比較后的结果跟双等号(==)的结果同样。

     在JAVA中利用"=="比較变量时,系统使用变量在"栈"中所存的值作为比較的根据。

     基本数据类型在"栈"中存的是其内容值,而复合数据类型在"栈"中存的是地址,这些地址指向"堆"中的对象。

     java.lang包中的Object类有public  boolean equals(Object obj)方法,它比較两个对象是否相等。

     其他对象的equals方法仅当被比較的两个引用指向的对象内容同样时,对象的equals()方法返回true。

      总之,=="比較的是"栈"中的内容,而equals()比較的是"堆"中的内容.


  • 相关阅读:
    [译]ASP.NET 5 Configuration
    loopback文档翻译
    [译]Testing Node.js With Mocha and Chai
    [译]在Node中使用indicative来验证model
    机器学习:计算机学习西洋跳棋
    OpenCV成长之路(10):视频的处理
    OpenCV成长之路(9):特征点检测与图像匹配
    OpenCV成长之路(8):直线、轮廓的提取与描述
    OpenCV成长之路(7):图像滤波
    OpenCV成长之路(6):数学形态学基本操作及其应用
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7294973.html
Copyright © 2011-2022 走看看