三、this、static、final關鍵字
阿新 • • 發佈:2020-09-09
this:
1.this是一個關鍵字,是一個引用,儲存記憶體地址指向自身。
2.this可以使用在例項方法中,也可以使用在構造方法中。
3.this出現在例項方法中其實代表的是當前物件。
4.this不能使用在靜態方法中。
5.this. 大部分情況下可以省略,但是用來區分區域性變數和例項變數的時候不能省略。
6.this() 這種語法只能出現在構造方法第一行,表示當前構造方法呼叫本類其他的構造方法,目的是程式碼複用。
class Date { private int year; private int month; private int day; publicDate(int year, int month, int day) { this.year = year; this.month = month; this.day = day; } public Date() { this(2020, 1, 2);//只能出現在建構函式第一行 } }
static:(靜態)
1.靜態變數,在類載入的時候初始化,不需要建立物件,記憶體就開闢了。其儲存在方法區記憶體當中。【使用"類名. "的方式訪問】
class Chinese{ private String id;private String name; static String country = "中國";
//當一個屬性是類級別的屬性,所有的物件的這個屬性的值是一樣的,建議定義為靜態變數。 public Chinese(String id, String name) { this.id = id; this.name = name; } public String toString() { return id + " " + name + " " + Chinese.country; } }public class Test { public static void main(String[] args) { Chinese c = new Chinese("1","張三"); System.out.println(c.toString());//1 張三 中國 } }
2.static 關鍵字來定義"靜態程式碼塊"
2.1語法格式
static {
//java語句
}
2.2靜態程式碼塊在類載入時執行,並且只執行一次。
2.3.靜態程式碼塊在一個類中可以編寫多個,並且遵循自上而下的順序依次執行。
2.4.靜態程式碼塊的作用是什麼?怎麼用?用在哪?什麼時候用?
-例如在類載入的時刻/時機執行程式碼完成日誌記錄
-靜態程式碼塊是java為程式設計師準備的一個特殊時刻,這個特殊時刻被稱為類載入時刻。若希望在此刻執行一段特殊的程式,這段程式可以直接放到靜態程式碼塊中。
2.5.通常在靜態程式碼塊完成預備工作,先完成資料的準備工作.
public class Test{ static { System.out.println("static-1"); } static { System.out.println("static-2"); } static { System.out.println("static-3"); } public static void main(String[] args) { System.out.println("mian()"); } }
2.6例項語句塊/程式碼塊【瞭解】
-例項程式碼塊可以編寫很多個,遵循自上而下的順序執行。
-例項程式碼塊在構造方法之前執行,例項程式碼塊對應執行一次。
-例項程式碼塊是Java為程式設計師準備的一個特殊時期,這個特殊時期被稱為:物件初始化時機。
class Fu{ public Fu(){ System.out.println("Fu()預設構造器執行"); } { System.out.println(11); } { System.out.println(21); } { System.out.println(31); } } public class Test{ public static void main(String[] args) { System.out.println("main()"); new Fu(); } }
//main()
//11
//21
//31
//Fu()預設構造器執行
final:
1.final 表示最終的,不可變的。
2.final 修飾的類無法被繼承。
3.final 修飾的方法無法被覆蓋。
4.final 修飾的變數一旦被賦值之後,不可重新賦值。
5.final 修飾的例項變數,必須手動賦值,不能採用系統預設值。
6.final 修飾的引用,一旦指向某個物件之後,不能指向其他物件,那麼被指向的物件無法被垃圾回收器回收。
7.final修飾的變數是不可變的,這種變數一般和static聯合使用,被稱為“常量”。
常量的語法定義格式:
public static final 型別 常量名 = 值;
java規範中要求所有的名字大寫,每個單詞之間使用下劃線連線。
class A{ //final int a;//在類中不能定義,定義方式見下行 final int a = 10; final int b; A(int b){ this.b = b; } } class B { int a; public B(int a) { this.a = a; } } public class Test { public static void main(String[] args) { final int m; m = 10; // m = 12; 錯誤 final B b = new B(10); // b = new B(); 錯誤 b.a = 30; System.out.println(Chinese.COUNTRY); } } class Chinese{ //常量 static final String COUNTRY = "中國"; }
上一篇:二,面向物件內容的補充
下一篇:持續更新中