8 hashCode和equals方法的關(guān)系
hashCode的作用是獲取哈希碼蚣驼,也稱為散列碼:它實際上是返回一個int整數(shù)這個哈希碼的作用是確定該對象在哈希表中的索引位置
equals它的作用是判斷兩個對象是否相等,如果對象重寫了equals方法,比較兩個對象的內(nèi)容是否相等:如果沒用重寫寨辩,比較兩個對象的地址是否相同,價于“==”。
hashCode是為了提高在散列結(jié)構(gòu)存儲中的效率序芦,在線性表中沒有作用。 equals和hashCode需要同時覆蓋
若兩個對象equals返回true粤咪,則hashCode有必要也返回相同的int數(shù)
若兩個對象equals返回false則hashCode不一定返回不同的int數(shù)谚中,但為不相等的對象生成不同hashCode值可以提高哈希表的性能。
若兩個對象hashCode返回相同int數(shù)寥枝,則equals不一定返回true.若兩個對象hashCode返回不同int數(shù)宪塔,則equals一點返回false。
9囊拜、抽象類和接口的區(qū)別
抽象類是用來捕捉子類的通用特性的某筐。它不能被實例化,只能被用作子類的超類冠跷。抽象類被用來創(chuàng)建繼承層級里子類的模板
接口是抽象方法的集合南誊,如果一個類實現(xiàn)了某個接口笋庄,那么它就繼承了這個接口的抽象方法骄瓣。這就像契約模式砌溺,如果實現(xiàn)了這個接口吕座,那么必須確保使用這些方法摹迷。接口只是一種形式误债,接口自身不能做任何事情娃圆。
抽象類可以有構(gòu)造方法陷遮、普通成員變量蜂挪、靜態(tài)方法重挑,接口中不能有構(gòu)造方法、普通成員變量锅劝、靜態(tài)方法攒驰。
一個類可以實現(xiàn)多個接口,但接口只能繼承一個抽象類
接口更多的是在系統(tǒng)架構(gòu)設(shè)計方法發(fā)揮作用故爵,主要是用于定義模塊之間的通信契約玻粪。而抽象類在代碼實現(xiàn)方面發(fā)揮作用,可以實現(xiàn)代碼的重用诬垂。
10劲室、自動裝箱與拆箱
裝箱就是自動將基本數(shù)據(jù)類型轉(zhuǎn)換為包裝器類型,拆箱就是自動將包裝器類型轉(zhuǎn)換為基本數(shù)據(jù)類型
裝箱操作回創(chuàng)建對象结窘,頻繁的裝箱操作會消耗許多內(nèi)存很洋,影響性能,所以可以避免裝箱的時候應(yīng)該盡量避免
equals(Objecto)因為原equals方法中的參數(shù)類型是封裝類型隧枫,所傳入的參數(shù)類型(a)是原始數(shù)據(jù)類型喉磁,所以會自動對其裝箱谓苟,反之,會對其進行拆箱
當(dāng)兩種不同類型用==比較時协怒,包裝器類的需要拆箱涝焙,當(dāng)同種類型用==比較時,會自動拆箱或者裝箱孕暇。