代碼塊、final、工具類、基本類型包裝類

1、代碼塊

根據(jù)代碼塊定義位置不同分為三種

?局部代碼塊:直接定義在方法內(nèi)部的代碼塊

初始化代碼塊(構造代碼塊):直接定義在類中.

靜態(tài)代碼塊:使用static修飾的初始化代碼塊.

一般會有此類面試題,結(jié)合繼承分析執(zhí)行順序。

父類靜態(tài)塊?—>子類靜態(tài)塊?—>父類構造塊?—>父類構造函數(shù)?—>子類構造塊?—>子類構造函數(shù)

http://blog.sina.com.cn/s/blog_812973c30101okqj.html

2、final

final修飾的類: 表示最終的類, 該類不能再有子類.

只要滿足以下條件就可以把一個類設計成final類:

① 某類不是專門為繼承而設計。

② 出于安全考慮,類的實現(xiàn)細節(jié)不許改動,不準修改源代碼。

③ 確信該類不會再被拓展。

final修飾的方法: 最終的方法,該方法不能被子類覆蓋.

什么時候的方法需要使用final修飾.

? ? ? ? ? 1):在父類中提供的統(tǒng)一的算法骨架,不準子類通過方法覆蓋來修改. 此時使用final修飾.模板方法設計模式.

? ? ? ? ? 2):在構造器中調(diào)用的方法(初始化方法),此時一般使用final修飾.

final修飾的變量: 最終的變量,常量,該變量只能賦值一次,不能再賦值.

? ? ? ? final是唯一可以修飾局部變量的修飾符.

1):final變量必須顯示地指定初始值,系統(tǒng)不會為final字段初始化。

2):final變量一旦賦予初始值,就不能被重新賦值。

3):常量名規(guī)范:常量名符合標識符,單詞全部使用大寫字母,如果是多個單詞組成,單詞間使用下劃線隔開。

? ? int類型的最大值:? final int MAX_VALUE = ....;

? ? 補充概念:全局靜態(tài)常量: public? static? final 修飾的變量,直接使用類名調(diào)用即可.


面試題: final修飾的引用類型變量到底表示引用的地址不能改變,還是引用空間中的數(shù)據(jù)不能改變.

final修飾基本類型變量:表示該變量的值不能改變,即不能用“=”號重新賦值。

final修飾引用類型變量:表示該變量的引用的地址不能變,而不是引用地址里的內(nèi)容不能變。


final是唯一可以修飾局部變量的修飾符,目的何在?期待局部內(nèi)部類.局部內(nèi)部類只能訪問final修飾的局部變量

什么時候使用常量:

? ? 當在程序中,多個地方使用到共同的數(shù)據(jù),且該數(shù)據(jù)不會改變,此時我們專門定義全局的常量,

? ? 一般的,我們在開發(fā)中會專門定義一個常量類,專門用來存儲常量數(shù)據(jù).

3、工具類:存放了某一類事物的工具方法的類.

工具類存放的包:工具包(util,utils,tool/tools,helper,helpers),存放工具類.

工具類起名: XxxUtil/XxxUtils/XxxXTool/XxxTools.Xxx表示一類事物,

? ? ? ? ? ? ? 比如ArrayUtil,StringUtil,JdbcUtil.

----------------------------------------------------------------------

工具類如何設計: 工具在開發(fā)中其實只需要存在一份即可.

? ? ? 1):如果工具方法沒有使用static修飾,說明工具方法得使用工具類的對象來調(diào)用.

? ? ? ? ? ? 此時把工具類設計為單例的.

? ? ? 2):如果工具方法全部使用static修飾,說明工具方法只需要使用工具類名調(diào)用即可.

? ? ? ? ? ? 此時必須把工具類的構造器私有化(防止創(chuàng)建工具類對象調(diào)用靜態(tài)方法).

----------------------------------------------------------------------

一般的,首選第二種,簡單. 在JDK中提供的工具類都是第二種. 如java.util.Arrays類.

4、基本類型包裝類

自動裝箱:可把一個基本類型變量直接賦給對應的包裝類變量。

自動拆箱:允許把包裝類對象直接賦給對應的基本數(shù)據(jù)類型變量。

在底層依然是手動裝箱和拆箱操作.

但是:裝箱操作使用的是Integer.valueOf的方式,而不是直接new Integer.


Integer與int的區(qū)別(包裝類型和基本數(shù)據(jù)類型的區(qū)別):

? 1):默認值: int的默認值是0. ? ? ?Integer的默認值為null.

? ? ? ? ? ? 推論:Integer既可以表示null,又可以表示0.

? 2):包裝類中提供了該類型相關的很多算法操作方法.

? ? ? ? static String toBinaryString(int i) :把十進制轉(zhuǎn)換為二進制

? ? ? ? static String toOctalString(int i) : :把十進制轉(zhuǎn)換為八進制

? ? ? ? static String toHexString(int i) : :把十進制轉(zhuǎn)換為十六進制

? 3):在集合框架中,只能存儲對象類型,不能存儲基本數(shù)據(jù)類型值.

? 4):請問:Integer和int是相同的數(shù)據(jù)類型嗎?不是:? ? ? ?

? 5): 方法中的,基本類型變量存儲在棧中,包裝類型存放于堆中. ? 開發(fā)中,建議使用包裝類型.

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容