java常用修飾符(隨堂筆記)
static
- static : 靜態的;
- static 可以用來修飾:屬性、方法、程式碼塊、內部類;
- 使用static修飾屬性,靜態變數(或類變數);
- 屬性:按是否使用static修飾,又分為:靜態屬性 VS 非靜態屬性(例項變數);
- 例項變數:我們建立了類的多個物件,每個物件都是獨立的擁有一套類中的非靜態變數,當修改其中一個物件中的非靜態變數時,不會導致其他物件中同樣的屬性值的修改;
- 靜態變數:我們建立了類的多個物件,多個物件共享一個靜態變數,當通過某一個物件修改靜態變數時,會導致其他物件呼叫此靜態變數時,是修改過了的;
- static修飾屬性的其他說明:
- 靜態變數隨著類的載入而載入,可以通過“類 . 靜態變數”的方式進行呼叫;
- 靜態變數的載入要早於物件的建立;
- 由於類只會載入一次,則靜態變數在記憶體中也只會存在一份,存在方法區的靜態域中;
- 使用static修飾方法;
- 隨著類的載入而載入,可以通過“類 . 靜態方法”進行呼叫;
- 靜態方法中,只能呼叫靜態方法或屬性;
- 非靜態方法中,既可以呼叫非靜態方法或屬性,也可以呼叫靜態的方法或屬性;
- static注意點
- 在靜態的方法內,不能使用this關鍵字、super關鍵字;
- 關於靜態屬性和靜態方法的使用,大家都可以從生命週期的角度去理解;
開發中,如何確定一個屬性是否要宣告為static的?
- 屬性是可以被多個物件所共享的,不會隨著物件的不同而不用的;
開發中,如何確定一個方法是否要宣告為static的?
- 操作靜態屬性的方法,通常設定為static的;
- 工具類中的方法,習慣上宣告為static的,比如:Math、Array、Collections;
單例(Singleton)設計模式
- 設計模式是在大量的實踐中總結和理論化之後優選的程式碼結構、程式設計風格、以及解決問題的思考方式。設計模式就是像是經典的棋譜,不同的棋局,我們用不同的棋譜,免去我們自己再思考和摸索;
- 所謂類的單例模式,就是採取一定的方法保證再整個的軟體系統中,對某個類只能存在一個物件例項,並且該類只提供一個取得其物件例項的方法。
擴充
-
建立模式,共5種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式
-
結構型模式,共7種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式
-
行為型模式,共11種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式
餓漢式 vs 懶漢式
//餓漢式
class Bank{
//1.私有化類的構造器
private Bank{
}
//2.內部類建立的物件
//4.要求此物件也必須宣告為靜態的
private static Bank instance = new Bank();
//3.提供公共的靜態的方法,返回類的物件
public static Bank getInstance(){
return instance;
}
}
//懶漢式
class Bank{
//1.私有化類的構造器
private Bank{
}
//2.宣告當前類物件,沒有初始化
//4.此物件也必須宣告為static的
private static Bank instance = null;
//3。宣告public、static的返回當前類物件的方法
public static Bank getInstance(){
if(instance == null){
instance = new Bank();
}
return instance;
}
}
區分餓漢式和懶漢式
-
餓漢式:(1)好處:執行緒是安全的;
(2)壞處:物件載入時間過長;
-
懶漢式: (1)好處:延遲物件的建立;
(2)壞處:執行緒是不安全的;
單例模式的優點:
- 由於單例模式只生成一個例項,減少了系統效能開銷,當一個物件的產生需要比較多的資源時,如讀取配置、產生其他依賴物件時,則可以通過在應用啟動時直接產生一個單例物件,然後永久駐留記憶體的方式來解決;
程式碼塊
-
程式碼塊的作用,用來初始化類、物件;
-
程式碼塊如果有修飾的話,只能使用static
-
靜態程式碼塊:>內部可以有輸出語句;
>隨著類的載入而執行,而且只執行一次;
>作用:初始化類的資訊;
>如果一個類中定義了多個靜態程式碼塊,則按照宣告的先後順序執行;
>靜態程式碼塊的執行要優先於非靜態程式碼塊;
-
非靜態程式碼塊:內部類可以有輸出語句;
>隨著物件的建立而執行;
>每建立一個物件,就執行一次非靜態程式碼塊;
>作用:可以在建立物件時,對物件的屬性等進行初始化;
>如果一個類中定義了多個非靜態程式碼塊,則按照宣告的先後順序執行;
對屬性可以賦值的位置
- 預設初始化;
- 顯式初始化/在程式碼塊中賦值;
- 構造器中初始化;
- 有了物件以後,可以通過“物件.屬性”或“物件.方法”的方式,進行賦值;
final
-
final:最終的;
-
final 用來修飾一個類:此類不能被其他類所繼承;
比如:String類、System類、StringBuffer類等
-
final 用來修飾方法,表明此方法不可以被重寫;
比如:Object類中getClass();
-
final 用來修飾變數,此時的“變數”就稱為時一個常量;
final 修飾屬性,可以考慮賦值的位置有:顯式初始化、程式碼塊初始化、構造器初始化;
final 修飾區域性變數,尤其是使用final修飾形參時,表明此形參是一個常量,當我們呼叫 此方法時,給常量形參一 旦賦值以後,就只能在方法體內使用此形參,但不能進行重新賦值;
- static final 用來修飾屬性:全域性變數;
相關文章
- Java 常用修飾符Java
- Java 修飾符Java 修飾符
- java修飾符Java
- Java入門筆記(六)——訪問許可權修飾符Java筆記訪問許可權
- Java的static修飾符Java
- java中的修飾符Java
- 隨堂筆記筆記
- vue學習筆記7-事件修飾符Vue筆記事件
- Java的訪問修飾符Java
- java修飾符使用指南Java
- JAVA java學習(24)——————java修飾符Java
- vue 基礎入門筆記 02:事件修飾符Vue筆記事件
- Vue - 按鍵修飾符 && 系統修飾符Vue
- java oop 修飾符&關鍵字JavaOOP
- Solidity語言學習筆記————20、函式修飾符Solid筆記函式
- Java中的異常處理(隨堂筆記)Java筆記
- 訪問修飾符
- 繼承&修飾符繼承
- vue 事件修飾符Vue事件
- vue sync 修飾符Vue
- JAVA修飾符、運算子、迴圈語句Java
- Java中final修飾符都有什麼作用Java
- vue 基礎入門筆記 08:鍵盤修飾符、自定義指令Vue筆記
- 許可權修飾符
- 修飾符static和abstract
- 09-02 Java語言基礎(修飾符)Java
- 如何獲取java類中的欄位修飾符?Java
- Day39--類修飾符
- c語言中const修飾符C語言
- Vue事件修飾符詳解Vue事件
- Kotlin可見性修飾符Kotlin
- TypeScript 類訪問修飾符TypeScript
- java中被final修飾的常用類有哪些?Java
- solidity 引用型別修飾符memory、calldata與storage 常量修飾符Constant與Immutable區別Solid型別LDA
- Java入門系列之訪問修飾符作用範圍Java
- #Java教程:訪問修飾符:public、protected、預設、private @FDDLCJava
- v-on 及其事件修飾符事件
- 正規表示式模式修飾符模式