Java用static定義類 為什么靜態(tài)成員變量要通過(guò)類外初始化賦值?
為什么靜態(tài)成員變量要通過(guò)類外初始化賦值?當(dāng)類的數(shù)據(jù)成員聲明為靜態(tài)時(shí),靜態(tài)數(shù)據(jù)成員只能定義一次并由同一類的所有對(duì)象共享。每個(gè)對(duì)象都有類中每個(gè)普通數(shù)據(jù)成員的一個(gè)副本,但靜態(tài)數(shù)據(jù)成員只存在一個(gè)實(shí)例,而不管定
為什么靜態(tài)成員變量要通過(guò)類外初始化賦值?
當(dāng)類的數(shù)據(jù)成員聲明為靜態(tài)時(shí),靜態(tài)數(shù)據(jù)成員只能定義一次并由同一類的所有對(duì)象共享。每個(gè)對(duì)象都有類中每個(gè)普通數(shù)據(jù)成員的一個(gè)副本,但靜態(tài)數(shù)據(jù)成員只存在一個(gè)實(shí)例,而不管定義了多少個(gè)類對(duì)象。靜態(tài)數(shù)據(jù)成員的目的之一是統(tǒng)計(jì)實(shí)際存在的對(duì)象數(shù)。靜態(tài)數(shù)據(jù)成員不能在類中初始化。實(shí)際上,類定義只用于描述對(duì)象的藍(lán)圖,其中不允許指定初始值。無(wú)法在函數(shù)中初始化靜態(tài)數(shù)據(jù)成員,因?yàn)殪o態(tài)數(shù)據(jù)成員由類的所有對(duì)象共享,因此每次創(chuàng)建類的對(duì)象時(shí),都會(huì)重新初始化靜態(tài)數(shù)據(jù)成員。
單例模式和全局靜態(tài)變量(類)的區(qū)別?
1. 單例特性:確保只有一個(gè)類的唯一實(shí)例存在。
類本身初始化自身。獲取唯一實(shí)例的方法非常清楚。可以通過(guò)類本身定義的靜態(tài)方法getInstance()獲取類的唯一實(shí)例引用。2靜態(tài)變量定義類的實(shí)例引用特性:類實(shí)例引用的靜態(tài)變量可以在任何文檔類中定義。獲取類實(shí)例引用的靜態(tài)變量。您可以定義靜態(tài)變量的類名,并通過(guò)點(diǎn)語(yǔ)法訪問(wèn)引用。靜態(tài)變量可以在任何位置重新賦值。Singleton模式是對(duì)靜態(tài)變量模式下創(chuàng)建類實(shí)例引用的缺陷的改進(jìn)
static{}。此代碼稱為靜態(tài)代碼塊,{}的內(nèi)容將在加載類時(shí)執(zhí)行。它用于將初始值導(dǎo)入全局靜態(tài)變量或常量??梢哉{(diào)用其他靜態(tài)方法來(lái)賦值系統(tǒng)輸出打印(x=3)可以執(zhí)行,因?yàn)閤在括號(hào)中被賦值