对于Java中关于==和equal() 举个例子比较好理解点:
string1="aaa";
string2="aaa";
String string3=new String("aaa");
String string4=new String("aaa");
string1==string2 // true; .
string1.equals(string2);//true;
string3==string4;//false 因为用new创建了2个对象,所以是两个不同的内存地址
string3.equals(string4);//true 而String类的是不可改变的,所以会指向同一个内存地址,所以返回为true
equals()是object的方法,所以只是适合对象,不适合于基本类型,equals()默认是用"=="比较两个对象的内存地址,如果想要比较两个对象的内容,要重写equals()方法才可...而==可以比较两个基本类型,也可以是对象...
String的equals()方法重写:
public boolean equals(Object object){
if( this==anObject)
{return true;}
if(anObject instancdOf String)
{String anotherString =(String)anObject;
int n= count;
if(n==anotherString.count)
{ char V1[]=value;
char V2[]=anotherString.value;
int i=offset;
int j=anotherString.offset;
while(n--!=0)
{ if (v1[i++]!=V2[j++]
return false;}
return true;}
}
return false;
}
总而言之:在类对象中 equals()方法比较的是对象的值,==比较的是对象.即为对象的引用(即为内存地址)一些特殊情况下equals()是重写了方法咯..
equal:是用来比较两个对象内部的内容是否相等的,由于所有的类都是继承
自java.lang.Object类的,所以如果没有对该方法进行覆盖的话,调用
的仍然是Object类中的方法,而Object中的equal方法返回的却是==
的判断,因此,如果在没有进行该方法的覆盖后,调用该方法是没有
任何意义的。
==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的
是真正意义上的指针操作。
|