第十二講 static關鍵字修飾屬性和方法、代碼塊、單例設計模式、對象數組案例

導讀

第一:static關鍵字的概念與本質分析

第二:代碼塊與其內存分佈

第三:單例模式的本質

第四:對象數組的定義與應用


一、static關鍵字

①、修飾屬性:編程類屬性,被關鍵字定義的字段。由JVM加載的時候就已經把這些屬性加載到ClassLoader中,也就是說同時就分配了內存空間了,能夠直接使用。

如:

class Applet

{

static int count = 10; // 被static關鍵字修飾的變量:count

}

使用:

System.out.println("第一次count修改後:" + (Applet.count+=1)); // 此時count的值變:11

System.out.println("第二次count修改後:" + (Applet.count-=3));// 此時是在count原有的(11)基礎上減去3,等於 8

System.out.println("第三次count修改後:" + (Applet.count +=5));// 從8加上5,等於13了

看出什麼了嗎?—— 對,您們都很聰明,count的值不斷在變化。說明一個問題,就是說被static修飾的屬性是一個數據共享區域。每次修改都是修改同一個變量而 已,現在這個問題就已經解釋清楚了。


②、方法修飾:其實這個我們可以理解爲一段可以被重複調用的代碼塊,但它是屬於類級別的。方法棧一旦執行完畢,那麼裏面的數據將被全部銷燬。還有一個就是說,靜 態方法中不能直接調用非靜態屬性。

代碼如下——

class Executer

{

public static void request()

{

System.out.println("=== request connection factory ===");

}

}


③、代碼塊

|- 靜態代碼塊:說白了,代碼塊其實就是一個有限區域的空間。也就是在一對花括號的範圍內,變量一旦除了這個大括號,那麼它的有效性就沒有了。

// 在所有的Java元素中,是第一個被執行的:也是唯一執行一次的代碼塊!!!

static

{

// 我在這裏定義的變量

int number =100;

System.out.println("number is : "  + number);

}

System.out.println("number is : "  + number); // 這裏是訪問不到的,因爲number已經除了大括號範圍了。

// 非靜態代碼塊——

{

boolean flag = false; 

System.out.println("boolean狀態值:" + false);

}

④、設計模式之:單例模式

目的:在程序的運行過程中,單例類只返回唯一的一份對象。

分析:如何設計唯一的一個對象呢,首先我是這樣考慮的,構造器是肯定不能在外部new新的對象的,因爲是單例嘛。其次可以在內部就可以馬上獲取到這個對象。

設計:然後編寫一個即使在外部都能夠調用生成唯一的一個對象。

public class MySingleton

{

private static MySingleton instance = new MySingleton(); // 創建了一個instance對象

private MySingleton()

{

super();

}

public static MySingleton getInstance()

{

return MySingleton.instance;

}

}

⑤、對象數組

class Student

{

private String name;

public void setName(String name)

{

this.name = name;

}

public String getName()

{

return name;

}

}

/** 創建一個學生類數組,裏面可以存放三個對象 **/

Student[] students = new Student[3]; // 這個就是對象數組,裏面可以存放三個Student學生對象——

這樣可以有效地管理每一個Student對象,但有一個限定,數組一旦定義,其容量就已經被確定了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章