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
}
}
-
java的應用範圍
Java是一種可以撰寫跨平臺應用軟體的面向物件的程式設計語言。自從sun公司推出java語言以來,java極大受到開發者和企業的歡迎,在網際網路如此發達的今天,java語言得到了廣泛的應用,比如網站,遊戲,電子商務等,java語言在這些領域開發佔很大的比例。在全球雲端計算和移動互...
-
Java工程師是做什麼的
Java工程師職位描述提要:精通Java/J2EE程式設計,能熟練使用SpringMVC、hibernate、框架進行專案開發,熟練使用freemarker等前端模板語言。Java工程師職位描述:1、負責產品功能開發;2、遵循公司技術標準、規範,高質量完成設計、開發任務;3、參與研發部門技術積累、技術難題...
-
21個java基本知識點
本文主要是一些java基礎知識點相關的,所以也希望能分享給剛剛入門的Java程式設計師和打算入Java開發這個行當的準新手們,希望可以給大家一些經驗,能讓大家更好學習和使用Java。1.JVM相關(包括了各個版本的特性)對於剛剛接觸Java的人來說,JVM相關的知識不一定需要理解很...
-
java日期時間基本操作方法
1.獲得Calendar例項:Calendarc=nstance();2.定義日期/時間的格式:SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");3.把日期/時間轉換成固定格式,使用SimpleDateFormat的'format()方法:Stringdatetime=at(ime());4.把字串轉換成日期/時間,...