寫在前面
作為5年的Java老鳥, 面對專業考試還是新手一樣, 汗顏, 此文為考試整理, 知識角度相對較偏, 不夠實用, 各位馬馬虎虎看看就行.
編程規范
各花入個眼, 規范是死的, 人是活的.
常見規則
- 大括號行首和行位之間不要有空行
- 泛型變量可單個大寫字母+一個數字
- 代碼每行限長120窄字符
- 每行不超過1個語句
- 文件不超過2000行
- 方法不超過50行
- 嵌套不超過5層
- JavaDoc修飾public或protected修飾的類 接口 枚舉 方法和成員
基礎類型
- byte int long short都可用10進制,8進制,16進制, 8進制0前綴, 16進制0x前綴
- 浮點到整數的轉換通過舍棄小數得到
- 浮點數比較需要使用compare
- +操作時, 操作數都將轉為int及以上執行
- +操作時, 操作數均為final, 則不需要強轉
類加載
雙親委派模式
- 當自定義一個類加載器時,為了保證賦予權限的完整,覆寫getPermissions()方法時,需調用基類的getPermission()方法, 否則該自定義類加載器加載的類具有的權限就會完全獨立於系統全局策略文件規定的權限, 該類的權限覆蓋了這些系統全局文件規定的權限。
- 類加載支持文件類型: jar war ear javawebenterprise
- 加載 驗證 准備 解析
- 類的卸載. 自定義類加載器加載的類才會被卸載
面向對象
- 重寫 (overload):子類對父類接口的重寫,相同的返回值和形參 使用@override注解,用來檢測是否是有效的正確覆寫,但是不寫不會編譯時報錯
- 隱藏 (hide):父類同名的成員變量和靜態方法只會被隱藏(靜態綁定導致),父類的非靜態方法會被覆蓋(動態綁定導致)
- 重載 (override):同類之間函數的不通返回值和形參
- 遮蔽 (shadow): 一個變量、方法或類可以分別遮蔽(shadow)在類內部具有相同名字的變量、方法或類。如果一個實體被遮蔽了,name就無法通過簡單名引用到它。
注意
- 不能在父類的構造函數調用子類的覆寫方法
抽象類和接口
- 接口的成員變量一定是public static final的
- 方法一定是public abstract的
- 方法可添加default, 實現默認實現
集合
- ArrayList.SubList返回的是內部類的實例, 不可直接修改和賦值, 且外部list修改, 子list會同步修改
循環
- 浮點數不能作為循環變量
- i++可能會溢出為負數, 導致死循環
異常
- 非受檢的:NullPointerException,ClassCastException,IllegalArgumentException,ArrayIndexsOutOfBoundsException,ArithmeticException
- 受檢異常: Exception,FileNotFoundException,IOException,SQLException
- 在finally語句塊中關閉流操作,拋出異常時直接忽略該異常,不做任何處理或者僅僅是記錄日志