static:
靜態的意思,成員修飾符,修飾類中的變數或者是類中的方法。
修飾變數:靜態變數、類變數
修飾方法:靜態方法、類方法
被static修飾的成員有兩種訪問方式:
1.物件名.靜態成員名(變數和方法)(不建議)
2.類名.靜態成員名(變數和方法)
1.與物件無關
2.優先物件進入記憶體中
3.靜態只能訪問靜態,非靜態可以訪問靜態也可以訪問非靜態
4.靜態方法中不能出現與物件有關的關鍵字,this,super
5.宣告周期長,隨著類的載入而載入,隨著類的消失而消失
靜態變數:
被所有物件所共享
對於方法什麼時候用static修飾,這個類是工具類或者是輔助類時,比如:arrays,math.
對於變數什麼時候用static修飾,資料被所有物件所共享時
static string country ="中國";
1、從儲存位置:
a) 靜態成員變數:方法區的靜態區域
b) 非靜態成員變數:堆記憶體中
2、從書寫格式上看:
a) 靜態成員變數:使用static修飾;
b) 非靜態成員變數:不使用static修飾;
3、從生命週期上看:
a) 靜態成員變數:類載入的時候,開始分配空間,類解除安裝的時候;
b) 非靜態成員變數:建立物件的時候分配空間;物件被**的時候;
4、從使用方法上看:
a) 靜態成員變數:通過類名直接訪問,不需要物件;
b) 非靜態成員變數:必須通過物件來使用;
5、從修改後的影響範圍上看:
a) 靜態成員變數:一旦修改,乙個類的所有例項物件都會受到影響;
b) 非靜態成員變數:一旦修改,受影響的只有修改它的乙個物件;
所以,像圓形的圓周率這樣的成員變數,一般需要定義成靜態和私有的(等學習了final後,還需要定義成final的);
**塊:
靜態**塊
static
放在類中成員位置上,可以定義多個
作用:用於給類進行初始化
靜態成員載入順序:
1.載入靜態成員到靜態區
2.載入靜態變數,並根據資料型別賦預設值
3.靜態變數顯示賦值
4.執行靜態**塊
靜態變數的載入和靜態**塊執行與**的書寫順序有關。
一般情況下,為了保證執行的結果順序不出錯,通常情況都是:靜態變數寫在上邊,下邊寫靜態塊
注意:類載入一次
構造**塊
放在類中成員位置上
優先於構造方法執行,作用是用於給所有物件進行統一初始化
如果類中有多個**塊,那麼就按照順序去執行
為什麼構造**塊優先於建構函式執行?
因為在建構函式的內部隱藏了三步:
1.執行super()語句
2.屬性顯示初始化
3.執行構造塊
其中第2步和第3步與位置順序有關
區域性**塊
放在區域性位置上,即放到函式中或者語句中
作用:控制區域性變數的使用範圍。類中成員載入的順序:
比如:demo.class;
到方法區中找有沒有demo.class檔案
1.如果找到,直接使用
2.如果沒有找到,到硬碟中(如果配置了classpath,就到classpath配置的值;如果沒有配置到當前目錄中找)查詢
1.沒找到,報錯
2.找到了,進行載入
1.非靜態成員載入到方法區的非靜態區域
2.靜態成員載入到方法區的靜態區域
1.靜態變數預設初始化
2.靜態變數顯示初始化
3.靜態**塊
物件的例項化過程:
比如:new demo();
1.在堆中開闢空間,並分配位址值
2.將類中的所有非靜態變數存入到空間中,並進行預設初始化
3.根據new 關鍵後邊的**,找到對應的建構函式,進棧執行
4.建構函式中隱藏的三步:1.super();2.變數顯示初始化3.構造**塊,這三步執行完,執行函式中的其他**
5.建構函式出棧,物件建立完成
單例設計模式:
設計模式:
通用問題的通用解決方案。
23種:
建立型:
單例設計模式:保證物件在記憶體中的唯一性
步驟:
1.私有化建構函式;
2.在本類中自己建立本類的唯一例項,為了安全,需要把儲存這個例項物件的變數封裝起來;
3.要提供乙個公開的方法,供別人獲取這個例項;
java學習筆記 第3天
sys as sysdba sys使用者可以建立其他的使用者 create user user01 identified by u01 建立乙個使用者,口令為u01 alter user user01 identified by us01 更改使用者的口令為us01 password 只有擁有dba...
java學習筆記 第4天
停止oracle的服務,只在使用它的時候才去啟動會加快電腦執行速度 oracle的服務 oracleserviceorcl 使用sql plus時需要啟用它 oracleoradb11g home 1tnslistener 使用第三方工具時,像pl sqldeveloper時需要啟用 約束資料型別是...
java學習筆記 第11天
建立視窗之後無法關閉 ctrl alt delete 直接殺程序 xml extensible markuplanguage xml 描述事物本身 xsl 事物的表現形式 dtd schema 定義xml的語法 與html的區別 更有利於資料的描述,交換 html不具有擴充套件性,xml可以定義新的...