在出現(xiàn)異常的時(shí)候,直接調(diào)用 toString方法打印當(dāng)中的屬性值,要比輸出一個(gè)xxxx@xxx 這種東西有用的太多
在出現(xiàn)異常的時(shí)候,直接調(diào)用 toString方法打印當(dāng)中的屬性值,要比輸出一個(gè)xxxx@xxx 這種東西有用的太多
如果覆蓋equals時(shí)如果不覆蓋hashCode 那么在hasmMap,hashSet,和hashtable等作為Key值,兩個(gè)邏輯相同的對象會(huì)被判斷為不同的KEY
什么時(shí)候該覆蓋equals?簡單來說,需要對象比較邏輯相等(不是對象相等的意思) ,并且超類沒有滿足條件。比如:Integer或者Date。 覆蓋equals通用約定以下x不...
終結(jié)方法(finalizer)通常是不可預(yù)測的,也是很危險(xiǎn)的,一般情況下是不必要使用它的。使用終結(jié)方法會(huì)導(dǎo)致行為不穩(wěn)定,降低性能,以及可移植性的問題,不過終結(jié)方法也有其可用之...
我們用java管理內(nèi)存是十分容易的,因?yàn)閖vm會(huì)幫我管理內(nèi)存的釋放,但是這不意味著我們不用擔(dān)心內(nèi)存的事情了 造成內(nèi)存泄漏的地方一般來說有三個(gè): 過期對象的引用 緩存 監(jiān)聽器和...
一般來說,如果能重用對象,盡量重用對象,而不是創(chuàng)建一個(gè)相同的對象.如果對象是不可變的,它始終就應(yīng)該被重用. 作者舉了非常多的反面例子 String對象的創(chuàng)建 第一種方法會(huì)創(chuàng)建...
一些工具類是不可以被實(shí)例化的,比如內(nèi)部全是靜態(tài)成員的類如java.lang.Math,java.util.Collections或者apache的各種util類 企圖將類做成...
在我們通常的單例方法中,通常有兩種方法來擊穿單例,反射和序列化 使用單元素枚舉可以有效的解決這兩個(gè)問題(在最后) 反射擊穿單例 這是一個(gè)普通的單例的例子 用反射擊穿 如何防止...
當(dāng)一個(gè)類中的部分參數(shù)可選,部分參數(shù)必填的時(shí)候,我們會(huì)如何寫這個(gè)類呢 使用構(gòu)建器 構(gòu)造器調(diào)用會(huì)使用很多我們根本不會(huì)用到的參數(shù),但是還是不得不用,這里時(shí)全部設(shè)置成了0,僅僅是這6...
靜態(tài)方法與構(gòu)造器不同的第一大優(yōu)勢在于,它們有名稱 對于類的構(gòu)造器來說他們的名字一定是一樣的 下面的例子中 無論是戴眼鏡的人還是不戴眼鏡的人,他們都是通過NEW的時(shí)候傳進(jìn)來的參...