今天,小老虎看了一本書Effective Java書在看第二章創(chuàng)建和銷毀對象的時候,很迷糊,于是做了一個實驗。
迷糊的是靜態(tài)工廠方法返回new的對象的時候,認為應(yīng)該是返回同一內(nèi)存地址值,多個方法同時調(diào)用這個靜態(tài)方法的話,會產(chǎn)生數(shù)據(jù)錯亂的問題。
因為,就小老虎了解的當初始化的時候靜態(tài)方法會進入到靜態(tài)方法方法區(qū)中。而且,每次的話應(yīng)該是內(nèi)存地址值一樣的。同樣的對象。
結(jié)果,證明了這個想法是錯誤的。
首先寫了一個Obj類

Obj
然后寫了一個靜態(tài)方法,返回Obj這個類的對象。

Obj Method
然后,打印地址值發(fā)現(xiàn)了地址值不一樣。

Result
于是明白了,因為每次的調(diào)用,相當于重新new,只不過是在靜態(tài)方法區(qū)初始化的。
不過還考慮到一個問題,那就是靜態(tài)方法區(qū)中對象的銷毀。
等小老虎研究后再告訴大家吧~~~