6 static關鍵字
用法;: 是乙個修飾符, 用於修飾成員
當成員被靜態修飾後,就多了乙個呼叫方式,除了可以被物件呼叫外,還可以直接被類名呼叫。 類名.靜態成員
static特點 static成員 也叫 類變數
1 隨著類的載入而載入 也就是說:靜態會隨著類的消失而消失。 說明它的生命週期最長
2 優先於的物件存在 靜態成員在記憶體中的方法區(共享區)
3 被所有的物件所共享
4 可以直接被類名所呼叫
例項變數和類變數的區別:
1,存放位置。
類變數隨著類的載入而存在於方法區中。
例項變數隨著物件的建立而存在於堆記憶體中。
2,生命週期:
類變數生命週期最長,隨著類的消失而消失。
例項變數生命週期隨著物件的消失而消失。
靜態使用注意事項:
1,靜態方法只能訪問靜態成員。
非靜態方法既可以訪問靜態也可以訪問非靜態。
2,靜態方法中不可以定義this,super關鍵字。
因為靜態優先於物件存在。所以靜態方法中不可以出現this。
3,主函式是靜態的。
靜態有利有弊
利處:對物件的共享資料進行單獨空間的儲存,節省空間。沒有必要每乙個物件中都儲存乙份。
可以直接被類名呼叫。
弊端:生命週期過長。
訪問出現侷限性。(靜態雖好,只能訪問靜態。)
什麼時候使用static
1 什麼時候定義靜態變數
當物件中出現共享資料時,該資料被靜態所修飾;物件中所特有的資料要定義成非靜態
2 什麼時候定義靜態函式
當函式沒有訪問到非靜態資料(物件特有的資料),該函式可以被定義成靜態
靜態**塊
格式: static
靜態**塊中執行的語句
特點: 隨著類的載入而執行,只執行一次,並優先於主函式, 用於給類進行初始化
7 主函式main
主函式是種特殊的函式, 作為程式的入口, 可以被jvm識別呼叫
主函式的定義
public: 代表函式的訪問許可權最大
static:代表主函式隨著類的載入就出現了
void: 代表主函式沒有具體返回值
main:不是關鍵字,是乙個特殊的單詞,可以被jvm識別
[string args] :函式的引數,引數型別是乙個陣列,陣列裡的元素是字串型別
主函式是固定格式被jvm識別 jvm呼叫主函式是 傳入的是new string[0];
8 物件的初始化過程
person p = new person("a",20);
該**在記憶體中的執行過程
1 因為new用到了person.class, 所以會先找到person.class檔案並載入到記憶體。
2 執行static**塊, 如果有static**塊可以給person.class類進行初始化
3 在堆記憶體中開闢空間,分配堆記憶體位址
4 在堆記憶體中建立物件的特有屬性,並進行預設初始化
5 對屬性進行顯示初始化
6 對屬性進行構造**塊初始化
7 對屬性進行對應的建構函式初始化
8 將記憶體位址賦值給棧記憶體中的p變數
9 單例設計模式
單例設計模式解決乙個類在記憶體中只有唯一的乙個物件
如何保證物件在記憶體中唯一
1 為了避免其他程式建立該物件,先禁止其他程式建立該物件
2 為了讓其他程式中訪問到該物件,只好在本類中自定義乙個物件
3 為了方便其他程式對自定義物件的訪問, 對外提供一些訪問方式
用**實現
1 將建構函式私有化
2 在類中建立乙個物件 物件為私有的
3 提供乙個方法可以獲得該物件
單例設計模式的兩種方式
1 餓漢式 single類一進記憶體就已經建立好了物件 一般用餓漢式
class single
private static single s = new single();
public static single getinstance()
}2 懶漢式 物件被方法呼叫時才進行初始化,也叫做 物件的延時載入
class single
private static single s = null;
public static single getinstance()
return s ; }
}
物件導向2
一.昨日內容回顧 1.匿名函式 lambda 引數 返回值 def chi return 飽了 lambda 飽了 2.sorted 排序 sorted iterable,key function,reverse false 3.filter 篩選 filter function,iterable ...
物件導向 2
1.物件導向的三大特性 封裝 繼承 多型。一 封裝 1.封裝的學習就是學習類成員的訪問許可權的控制。是設計類的時候需要考慮的問題。概念 通過對類中的成員的訪問許可權的控制,實現對外部類的訪問的可見和隱藏的控制的過程。2.類成員的訪問許可權的控制,通過訪問許可權修飾符來控制。可以在類成員的前面新增訪問...
物件導向2
物件導向的精髓是 將資料和處理資料的 繫結,成為乙個9物件 只要獲取到物件,相應的資料和方法都有了 組合 在乙個物件內引用其他物件 組合可以降低 的冗餘,降低耦合度 繼承是類之間的關係,組合是物件之間 封裝 隱藏內部細節,對外實現使用介面 封裝可以提高安全性 封裝是為了明確區分內部與外部 在屬性或方...