Java中的== 和equals()方法詳解與實例教程
Java中的== 和equals()方法有什麼區別呢?下面是由本站小編為大家整理的Java中的== 和equals()方法詳解與實例教程,喜歡的可以收藏一下!瞭解更多詳情資訊,請關注應屆畢業生考試網!
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方法也是用雙等號(==)進行比較的,所以比較後的結果跟雙等號(==)的結果相同。
Object中的equals()方法
publicbooleanequals(Objectobj){
return(this==obj);
}
舉個實例:
;
publicclassPerson{
privateintage;
privateStringname;
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
=name;
}
publicPerson(intage,Stringname){
=age;
=name;
}
publicPerson(){
}
@Override
publicinthashCode(){
finalintprime=31;
intresult=1;
result=prime*result+age;
result=prime*result+((name==null)?0:Code());returnresult;}
@Override
publicbooleanequals(Objectobj){
if(this==obj)
returntrue;
if(obj==null)
returnfalse;
if(getClass()!=lass())
returnfalse;
Personother=(Person)obj;
if(age!=)
returnfalse;
if(name==null){
if(!=null)
returnfalse;
}elseif(!ls())
returnfalse;
returntrue;
}
}
[java]view plaincopyprint?
;
publicclassMainTest{
publicstaticvoidmain(String[]args){
Personp1=newPerson(99,"A");
Personp2=newPerson(99,"A");
Personp3=p1;
tln(p1==p2);//false
tln(p1==p3);//true
tln(ls(p2));
//未重寫equals()方法,返回false
//重寫equals()方法後,比較的是內容,返回true;tln("<====================>");Strings1="hello";Strings2="hello";
Strings3=newString("hello");
tln(s1==s2);//true
tln(s1==s3);//false
tln(ls(s2));//true
tln(ls(s3));//true
}
}
-
40個Java多線程問題總結
Java多線程是什麼Java提供的併發(同時、獨立)處理多個任務的機制。多個線程共存於同一JVM進程裏面,所以共用相同的內存空間,較之多進程,多線程之間的通信更輕量級。依我的理解,Java多線程完全就是為了提高CPU的利用率。Java的線程有4種狀態,新建(New)、運行(Runnabl...
-
Java 正則表達式
Java是一門編程語言,那麼大家知道Java正則表達式是怎樣的呢?下面一起來看看!Java正則表達式正則表達式定義了字符串的模式。正則表達式可以用來搜索、編輯或處理文本。正則表達式並不僅限於某一種語言,但是在每種語言中有細微的差別。正則表達式實例一個字符串其...
-
如何學好Java語言編程
決定好想學什麼編程語言了嗎,現在就讓我們開始學習吧。所有你需要做的就是打開一本書,然後開始閲讀,是這樣的嗎?不全是這樣的。learn-first我會給出學習第一門編程語言的理想方法佈局,你不僅應該學習這個佈局方法,還應該享受精通它——如果不能掌握的話。學習第一門...
-
計算機二級考試Java精選訓練題
下面是應屆畢業生考試網小編搜索整理的計算機二級考試Java精選訓練題,希望對大家有所幫助。[簡答題]本題中,在下畫線上填寫代碼,指定變量b為字節型,變量f為單精度實型,變量l為64位整型。publicclassjaval{publicstaticvoidmain(String[-]args){b=49;f=8.9f;l=0xfedl...