真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java靜態(tài)代碼塊作用,類的靜態(tài)代碼塊

java中static的作用

static可以修飾變量(屬性)、方法、代碼塊和內部類

10年積累的網(wǎng)站制作、網(wǎng)站設計經驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設流程,更有紅河哈尼免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

static屬性:屬于這個類所有,即由該類創(chuàng)建的所有對象共享同一個static屬性??梢詫ο髣?chuàng)建后通過對象名.屬性名和類名.屬性名兩種方式來訪問。也可以在沒有創(chuàng)建任何對象之前通過類名.屬性名的方式來訪問。

static方法:也可以通過對象名.方法名和類名.方法名兩種方式來訪問

static代碼塊:當類被第一次使用時(可能是調用static屬性和方法,或者創(chuàng)建其對象)執(zhí)行靜態(tài)代碼塊,且只被執(zhí)行一次,主要作用是實現(xiàn)static屬性的初始化。

static內部類:屬于整個外部類,而不是屬于外部類的每個對象。不能訪問外部類的非靜態(tài)成員(變量或者方法),.可以訪問外部類的靜態(tài)成員

題主的問題可以參考第一點

JAVA中 靜態(tài)塊的作用

我先說一下靜態(tài)塊吧,下面就是一個靜態(tài)塊,

static

{

}

靜態(tài)塊的特點是在類加載的時候就執(zhí)行,先說一下類加載,一個程序要想運行,首先要把代碼加載到內存中對吧?然后才能去和CPU交流,這是馮諾依曼計算機規(guī)定的。Java也是一樣,Java的.class字節(jié)碼文件要想執(zhí)行,首先也要加載到內存,由類加載器把字節(jié)碼文件的代碼加載到內存中,這一步就叫類加載,這是首先要進行的。

public

class

Test

{

static

{

System.out.println("我是靜態(tài)塊");

}

}

當創(chuàng)建Test類的一個對象的時候,比如new

Test()

,是這樣,首先是類加載,然后才能new對象,靜態(tài)塊在類加載的時候就執(zhí)行了,這就說明靜態(tài)塊在new對象之前就會執(zhí)行,而且一個類在第一次被使用的時候會被加載,然后在整個應用程序的生命周期當中不會再次被加載了,就加載這一次,所以這就說明,靜態(tài)塊就執(zhí)行一次,不會執(zhí)行第二遍!

public

class

Test

{

public

Test()

{//

構造方法

System.out.println("我是構造方法,創(chuàng)建對象的時候我會執(zhí)行,我執(zhí)行完,對象就造出來了");

}

static

{

System.out.println("我是靜態(tài)塊,類加載的時候我就執(zhí)行了,而且只執(zhí)行這一次");

}

}

然后這樣:

new

Test();

new

Test();

你會發(fā)現(xiàn)首先打印出靜態(tài)塊的信息,然后才打印出構造方法信息,然后再次new

Test();的時候,只打印出了構造方法的信息,這個例子證明了我上面說的是對的!

這就是靜態(tài)塊,我說完了,至于你說的

靜態(tài)塊中初始化Map。

初始化這幾個字很難講他的意思,意思包括

把一些內容設為默認狀態(tài)、把沒準備的準備好、在什么什么之前就怎么怎么樣、將變量賦為默認值,等等,這個不能精確的說,只能就事說事,下面就可以說是在靜態(tài)塊中初始化Map,

public

class

Test

{

private

static

Map

m;

static

{

m

=

new

HashMap();

}

}

就說道這兒,樓主

看了一個帖子

寫的是初始化Map的,

如果還有疑問

不如把地址貼出來,大家也好幫你,就光說初始化Map,這個問的太叫人沒法回答了。

Java中static的作用?

1.static 成員變量

在類中一個成員變量可用 static 關鍵字來修飾,這樣的成員變量稱為 static 成員變量,或靜態(tài)成員變量。而沒有用 static 關鍵字修飾的成員變量稱為非靜態(tài)成員變量。

靜態(tài)成員變量是屬于類的,也就是說,該成員變量并不屬于某個對象,即使有多個該類的對象實例,靜態(tài)成員變量也只有一個。只要靜態(tài)成員變量所在的類被加載,這個靜態(tài)成員變量就會被分配內存空間。因此在引用該靜態(tài)成員變量時,通常不需要生成該類的對象,而是通過類名直接引用。引用的方法是“類名 . 靜態(tài)變量名”。當然仍然可以通過“對象名 . 靜態(tài)變量名”的方式引用該靜態(tài)成員變量。相對應的非靜態(tài)成員變量則屬于對象而非類,只有在內存中構建該類對象時,非靜態(tài)成員變量才被分配內存空間。

2.static 成員方法

Java 中也支持用 static 關鍵字修飾的成員方法,即靜態(tài)成員方法。與此相對應的沒有用 static 修飾的成員方法稱為非靜態(tài)成員方法。

與靜態(tài)成員變量類似,靜態(tài)成員方法是類方法,它屬于類本身而不屬于某個對象。因此靜態(tài)成員方法不需要創(chuàng)建對象就可以被調用,而非靜態(tài)成員方法則需要通過對象來調用。

特別需要注意的是,在靜態(tài)成員方法中不能使用 this、super 關鍵字,也不能調用非靜態(tài)成員方法,同時不能引用非靜態(tài)成員變量。這個道理是顯而易見的,因為靜態(tài)成員方法屬于類而不屬于某個對象,而 this、super 都是對象的引用,非靜態(tài)成員方法和成員變量也都屬于對象。所以當某個靜態(tài)成員方法被調用時,該類的對象可能還沒有被創(chuàng)建,那么在靜態(tài)成員方法中調用對象屬性的方法或成員變量顯然是不合適的。即使該類的對象已經被創(chuàng)建,也是無法確定它究竟是調用哪個對象的方法,或是哪個對象中的成員變量的。所以在這里特別強調這一點。

3.static 代碼塊

static 代碼塊又稱為靜態(tài)代碼塊,或靜態(tài)初始化器。它是在類中獨立于成員函數(shù)的代碼塊。static 代碼塊不需要程序主動調用,在JVM加載類時系統(tǒng)會執(zhí)行 static 代碼塊,因此在static 代碼塊中可以做一些類成員變量的初始化工作。如果一個類中有多個 static 代碼塊,JVM將會按順序依次執(zhí)行。需要注意的是,所有的static 代碼塊只能在JVM加載類時被執(zhí)行一次。

4.static 內部類

在 Java 中還支持用 static 修飾的內部類,稱為靜態(tài)內部類。靜態(tài)成員內部類的特點主要是它本身是類相關的內部類,所以它可以不依賴于外部類實例而被實例化。靜態(tài)內部類不能訪問其外部類的實例成員(包括普通的成員變量和方法),只能訪問外部類的類成員(包括靜態(tài)成員變量和靜態(tài)方法)。即使是靜態(tài)內部類的實例方法(非靜態(tài)成員方法)也不能訪問其外部類的實例成員。

java中的靜態(tài)代碼塊、代碼塊、構造器的執(zhí)行順序是怎樣呢,這三者有什么作用呢

先說執(zhí)行順序:我們在new一個對象時,如果類還沒加載,就需要先將類加載到內存,此時就會執(zhí)行靜態(tài)代碼塊,在創(chuàng)建對象時,是先執(zhí)行代碼塊,然后執(zhí)行構造器。所以靜態(tài)代碼塊、代碼塊、構造器的執(zhí)行順序是:靜態(tài)代碼塊→代碼塊→構造器。

再說作用:靜態(tài)代碼塊是用于初始化類的(在加載類時執(zhí)行,只執(zhí)行一次),代碼塊是用于初始化對象的(在創(chuàng)建對象時執(zhí)行,每次創(chuàng)建對象時都執(zhí)行),構造器是用于創(chuàng)建對象的。


當前標題:java靜態(tài)代碼塊作用,類的靜態(tài)代碼塊
URL地址:http://weahome.cn/article/hsdpds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部