A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 史卜坤 中级黑马   /  2012-6-26 20:18  /  1441 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于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方法返回的却是==

的判断,因此,如果在没有进行该方法的覆盖后,调用该方法是没有

任何意义的。

==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的

是真正意义上的指针操作。

评分

参与人数 1黑马币 +10 收起 理由
黄奕豪 + 10 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 加入黑马