Equals和==的差别

发布时间:2017-7-9 7:03:56编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Equals和==的差别 ",主要涉及到Equals和==的差别 方面的内容,对于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方法也是用双等号(==)进行比較。

例证:

package demo;/** * @author wanghj * @date 2016/03/06  */public class CSDN_equals {	public static void main(String []args){		  //variable pools		  String str1="TestString";		  String str2="TestString";		  String str3="TestStringDif";		  String str4=new String("TestString");		  String str5=new String("TestString");		  //Just compare "=="		  System.out.println("str1==TestString:"+ (str1=="TestString"));		  		  System.out.println("str1==str2:"+ (str1==str2));		  System.out.println("str1==str3:"+ (str1==str3));          System.out.println("str1==str4:"+ (str1==str4));          System.out.println("str4==str5:"+ (str4==str5));                    //Just compare "equals"          System.out.println("str1.equals(TestString):"+str1.equals("TestString"));          System.out.println("str1.equals(str2):"+str1.equals(str2));          System.out.println("str1.equals(str3):"+str1.equals(str3));          System.out.println("str1.equals(str4):"+str1.equals(str2));          System.out.println("str4.equals(str5):"+str4.equals(str5));          System.out.println("equals special test:"+"2016".equals(2016));	}}


Object的equals方法:

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


String的equals方法:

    public boolean equals(Object obj)    {        if(this == obj)            return true;        if(obj instanceof String)        {            String s = (String)obj;            int i = value.length;            if(i == s.value.length)            {                char ac[] = value;                char ac1[] = s.value;                for(int j = 0; i-- != 0; j++)                    if(ac[j] != ac1[j])                        return false;                return true;            }        }        return false;    }



上一篇:类数组变为数组
下一篇:haprox动态下线后端主机

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款