150天打卡day14__static和final
上節(jié)回顧
package
import
封裝
本節(jié)重點
static
static英文含義靜態(tài)的,所有的靜態(tài)相關,都是用static關鍵字修飾的
static關鍵字可以修飾成員變量,稱為靜態(tài)變量
static關鍵字可以修飾方法,稱為靜態(tài)方法
static關鍵字可以修飾代碼塊,稱為靜態(tài)塊
靜態(tài)變量
由static修飾
屬于類的,存在方法區(qū)中,只有一份
可以通過類名直接打點調用
所有對象共享的數(shù)據(jù)都統(tǒng)一聲明為靜態(tài)變量
飛機大戰(zhàn)里的圖片,視頻,音頻
優(yōu)點:靜態(tài)變量不需要實例化,靜態(tài)變量的值可以直接賦值,不需要參數(shù)傳遞
缺點:靜態(tài)變量屬于類,所以在類存在的時候就會加載到內存中,如果一直沒有被引用的話,會加大
內存負擔和程序運行負擔,影響運行效率
靜態(tài)方法
由static修飾
靜態(tài)方法和非靜態(tài)方法都存儲在方法區(qū)中,只有調用的時候有區(qū)別,靜態(tài)方法在調用的時候
是直接用類名打點調用.非靜態(tài)方法通過對象來調用
注意
如果想頻繁的使用一個方法,并且這個方法不需要某個對象數(shù)據(jù)時,就可以設置為靜態(tài)方法
靜態(tài)方法中不允許有隱式的this關鍵字 ,this屬于對象,不屬于類,而靜態(tài)屬于類,不屬于對象
靜態(tài)方法中不能調用非靜態(tài)成員
靜態(tài)方法只能訪問靜態(tài)的變量和調用靜態(tài)的方法,靜態(tài)的只能使用靜態(tài)的,但是非靜態(tài)的可以調
用靜態(tài)方法和變量,也可以調用非靜態(tài)的變量和方法
?
靜態(tài)塊
靜態(tài)代碼塊(靜態(tài)初始化塊):JVM加載類(加載在運行之前)時執(zhí)行,靜態(tài)代碼塊只執(zhí)行一次,
靜態(tài)塊常用來執(zhí)行類屬性的初始化。
例如:
?
思考:為啥需要靜態(tài)初始化塊?
靜態(tài)初始化塊主要用來初始化類變量。有時需要有些代碼在項目啟動時就執(zhí)行,靜態(tài)代碼塊是主動執(zhí)行的。
類變量可以在構造函數(shù)中初始化為啥還要定義靜態(tài)初始化塊呢?
因為,類變量可以通過類名.類變量的形式調用,有的時候我們不想為了初始化類變量而創(chuàng)建對象,所以就有了靜態(tài)初始化塊。
靜態(tài)初始化塊可以在類加載的時候執(zhí)行一次。避免了了初始化類變量而創(chuàng)建對象
final
final 最后,最終的
final關鍵字可以修飾成員變量和局部變量,
final關鍵字可以修飾方法。
final關鍵字可以修飾類。
final 修飾變量
通常由final定義的變量稱之為是常量。例如:常用于對一些特定數(shù)值的聲明
final關鍵字可用于聲明變量,必須在聲明時就對其進行賦值操作,一旦該變量被設定,就不可
以改變
final關鍵字修飾一個基本類型的變量(包括局部變量和成員變量)時,該變量不能重
新賦值,第一次的值為最終的
fianl關鍵字修飾一個引用類型變量時,該變量不能重新指向新的對象
?
final修飾方法
final修飾的方法不允許被重寫
final修飾類
如果希望一個類不允許任何類繼承,而且也不允許其他人對這個類進行任何改動,可以將這
個類設置為final類
如果將這個類設定為final類,那么類中的所有方法都被隱式的設置為final形式的,但是類中的
成員變量可以被定義為final形式或者非final形式.
static final
聲明的同時必須初始化
能同時被static和final關鍵字修飾的量。一般情況下,是公有的,靜態(tài)的,不可改變的量
public static final修飾的量最好變量的名字全大寫且單詞間用下劃線分隔。通過類名調用
這個量。
當一個常數(shù)或字符串我們需要在程序中反復使用的時候,我們就可以把它定義為static
final,這樣內存就不用重復的申請和釋放空間了。
針對引用類型變量的final修飾符也是很多人搞混淆的地方。實際上final只是修飾引用變量
的值(也就是限定引用保存的地址不能變)。至于該引用指向的對象,內容是否能變,那
就管不著了。所以,對于如下語句:
你可以修改它指向的對象的內容,比如:
但是不能修改它的值,比如:
總結
static 靜態(tài)的 所有與靜態(tài)相關的,都由static修飾
static修飾變量稱之是靜態(tài)變量,屬于類存儲在方法區(qū),可以由類名直接調用
static修飾方法稱之是靜態(tài)方法,也屬于類存儲在方法區(qū),可以又類名調用,靜態(tài)方法中只能調用
靜態(tài)變量和方法,非靜態(tài)方法即可以調用非靜態(tài)變量也可以調用靜態(tài)變量和方法.
static修飾代碼塊稱之是靜態(tài)塊,在類加載期間執(zhí)行的代碼塊,只執(zhí)行一次,一般用來做類的初始
化工作.
歡迎??點贊+關注,筆芯??
