6、java——面向物件:構造器,this,static,block,debug
構造器,this,static,block,debug
1、Constructor : 構造器| 構造方法 | 建構函式
(1)作用: 為物件初始化資訊 (初始化: 第一次賦值) --> 為物件的成員變數在建立物件的同時賦值
(2)使用: 跟隨new一起使用(new第二步所呼叫的)
(3)定義:
修飾符 類名(引數列表){
方法體;
}
①不需要返回值型別,也沒有void②可以根據需要定義return關鍵字③作用提前結束方法,構造器的名字與類名保持一致。
(4)特點:構造器也是特殊的方法,定義多個過載構造器,構造器的名字都與類名保持一致,引數列表不同就能構成過載構造器,如果沒有顯示的定義構造器,編譯器會自動為類提供一個空構造,如果存在顯示定義的構造器,編譯器不會提供任意構造器。
構造器先建立物件後賦值,建立物件的同時賦值,為建立賦值更早,在建立物件的時候就能確定成員的值,跟簡單,為了所定義的所有的javabean,必須 至少一共一個空構造。
2、this 關鍵字
(1)this指代當前物件(new的物件)-->儲存所有指向的物件的地址。
構造器的首行呼叫本類中的其他構造器。
this(引數列表)
(2)區分同名的成員與區域性的問題,預設就近原則。
如果出現同名問題,想要指代呼叫成員,通過this.成員-->因為this指代物件,通過物件呼叫成員,如果沒有同名問題,可以省略this.呼叫成員。
①在構造器中使用this,預設指代當前new的物件,儲存的是this的物件的地址②在的成員方法中使用this,this在成員方法中預設指代當前呼叫成員方法的物件。
(3)注意:①多個構造器之間不能相互呼叫,否則無法停止呼叫。
②在static修飾的內容中不能使用this。
3、static 靜態的
(1)成員修飾符 : 只能修飾成員位置的內容,不能修飾區域性。
(2)修飾變數 : 靜態變數或類變數。
(3)修飾方法 : 靜態方法或類方法。
(4)修飾塊 : 靜態塊。
(5)修飾類 : 靜態內部類。
(6)靜態內容的使用:。
①跟隨類名使用
類名.靜態變數名
類名.靜態方法名(引數列表);
②跟隨物件使用
引用.靜態變數名
引用.靜態方法名(引數列表);
成員是是屬於物件的,靜態的是屬於類的
③成員變數 :
被static修飾的變數 --> 靜態變數或類變數
不被static修飾的變數 --> 例項變數
④成員方法:
被static修飾的方法 --> 靜態方法或類方法
不被static修飾的方法 --> 例項方法
(7)注意: ①this只能使用在非靜態環境中。
②在非靜態方法中使用this,預設指代當前呼叫例項方法的物件。
③靜態內容是獨一份的,靜態變數存在與靜態區中,多個物件共享的資源。
- 成員內容跟隨物件存在與物件的堆記憶體中,多個物件,就有多份成員。
(8)初始載入順序: 先靜態後成員。②靜態內容在類第一次載入完成之後就會進行初始化。③成員變數必須在執行到new物件的時候,才會存在物件的堆記憶體,在物件的堆記憶體中才會有成員變數。
a.在靜態內容中,可以直接使用靜態的內容,需要跟隨物件使用成員。
b.在成員內容中,可以直接 使用靜態內容,可以直接 使用成員內容。
this不能使用在靜態環境中,靜態的方法可以直接跟隨類呼叫,可以能根本不存在物件,靜態方法的this,無法指代某個物件。
(9)靜態變數|方法的應用場景:
①.工具類 : Math,Arrays... 靜態工廠
可以跟隨類名直接使用靜態方法,使用簡單。
②.定義一個類,類中的內容,所有當前型別物件共享的,唯一的可以定義為靜態的或沒有物件就可以使用的成員可以定義為靜態的。具體的需要根據業務進行分析,不絕對。
4、block 塊: 瞭解
{} 塊 自成作用域,分類,執行時機①作用域看待②語義化
(1)區域性程式碼塊或普通語句塊{}定義在方法中,跟隨方法的呼叫而執行
構造塊: {}定義在類中方法外
跟隨new一起使用
①成員內容的初始資訊,比構造器中的程式碼跟早執行
②對物件的某些內容進行初始
(2)靜態塊 : static修飾{},定義在類中方法外,在類第一次載入完成之後執行
①會為靜態內容進行初始化
②資訊的配置,資源的載入
(3)同步塊 : 多執行緒學習
(4)①構造塊中的程式碼會先於構造器中的程式碼之前執行②如果存在多個構造塊,會從上到下一次執行③靜態塊在類第一次載入完成之後執行,並且僅會執行一次④如果存在多個靜態塊,會從上到下一次執行
靜態塊-->main-->建立物件 --> 構造塊 --> 構造器
5、Debug 除錯工具
(1)debug的作用:
①追蹤程式的執行流程②定位異常出現的位置③觀察程式執行期間變數變化的情況④根據程式的執行流程學習第三方框架的原始碼
(2)步驟:
①打斷點:在行號的後面單擊設定斷點,單擊取消斷點
②debug執行:step over F8 下一步跳過,如果遇到方法的呼叫,不進入,直接跳過進入下一行
③step into F7 步入,如果下一步遇到自定義方法的呼叫,進入方法跟隨執行,如果是jdk提供的方法,不會進入
④Force step into alt+shift+F7 強制步入,如果是jdk提供的方法,會強制進入跟隨執行
⑤step out shift+F8 跳出,如果執行在方法的呼叫中,下一步直接調出到方法呼叫的位置
⑥Run to Cursor 執行到游標所在位置