JAVA基础--final、static区别以及类加载顺序
生活随笔
收集整理的這篇文章主要介紹了
JAVA基础--final、static区别以及类加载顺序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
| 一、JAVA中final 與 static 總結(jié) | ||
| final | static | |
| 修飾類 | 該類不可被繼承 | 只能修飾內(nèi)部類,該類不需要new,是靜態(tài)加載(嵌套頂層類) |
| 修飾接口 | × | × |
| 修飾構(gòu)造函數(shù) | × | × |
| 修飾語句塊 | × | 虛擬機(jī)按聲明順序初始化static成員字段和static語句塊 |
| 修飾字段屬性 | 表示屬性初始化后不能修改(實例常量) | 是類變量,所有實例共享該變量值(類變量) |
| 在定義時或構(gòu)造函數(shù)中賦值(每個實例擁有一份拷貝) | ||
| 修飾方法 | 該方法不能被覆蓋(只可繼承) | 是類方法,所有實例共享該方法(類方法) |
| 修飾函數(shù)參數(shù) | 參數(shù)值不能被函數(shù)修改 | × |
| 修飾函數(shù)局部變量 | 局部變量初始化后不能修改(局部常量) | × |
| 用途 | 1).為了防止方法被覆蓋或改寫; | 1).定義全局變量或常量; |
| 2).提高運(yùn)行效率,JAVA對final方法調(diào)用采用內(nèi)嵌機(jī)制; | 2).定義類方法; | |
| ? | ? | ? |
| 二、JAVA類加載順序 | ||
| JAVA類加載順序: | 1).按代碼順序遞歸加載靜態(tài)成員/代碼塊,先父類再本類; | |
| ? | 2).按代碼順序遞歸加載非靜態(tài)成員/代碼塊,先父類再本類; | |
| ? | 3).按代碼順序遞歸調(diào)用構(gòu)造函數(shù),先父類再本類; | |
| ? | ? | |
| JAVA類加時機(jī): | 1).調(diào)用靜態(tài)成員時,加載靜態(tài)成員所在的類及父類; | |
| ? | 2).第一次new對象時加載(第二次new不再加載) | |
| ? | 3).加載子類會先加載父類.有static和final修飾的成員不會被加載;當(dāng)成常量使用; | |
轉(zhuǎn)載于:https://blog.51cto.com/tech4j2ee/630203
總結(jié)
以上是生活随笔為你收集整理的JAVA基础--final、static区别以及类加载顺序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 步多多步数为什么不增加
- 下一篇: Discrete Logging hu