class Person{
public static void sleep ( ) {
system.out.println(“弟弟”)村视;
}
}
既然sleep方法沒有訪問到對象中的特有數(shù)據斧拍,都可以不需要對象就可以參加使用該方法,只需要在該方法上用static修飾即可
static:用于修飾成員的靜態(tài)關鍵字
Class StaticDemo{
public static void main(String[ ] args)
{
Person.sleep( )关摇;
}
}
sleep方法屬于Person.class史汗,發(fā)現(xiàn)sleep并沒有使用Person對象中的數(shù)據,所以Person對象的建立是沒有意義的拒垃,所以我們不創(chuàng)建Person對象就想能調用停撞,可以通過類名的方式來訪問,注意:用類名直接調用的方法必須通過制定修飾符static來修飾。
2.什么時候需要靜態(tài)修飾戈毒?
該函數(shù)沒有訪問過對象中的屬性時艰猬。
3.靜態(tài)可以把共性的數(shù)據抽取出來共享:
static String country="CN";
后面就可以直接 System.out.println(Person.country)
4.靜態(tài)關鍵字 static 是什么? 成員修飾符
有什么特點埋市?
a.被靜態(tài)修飾的成員冠桃,可以直接被類名所調用。
b.靜態(tài)成員優(yōu)先于對象存在
c.靜態(tài)成員會隨著類加載而加載道宅,隨著類消失而消失食听,生命周期最長。
5.注意事項:
a.靜態(tài)方法的訪問局限性,靜態(tài)無法訪問靜態(tài)。
b.靜態(tài)方法中不能出現(xiàn) this或super關鍵字(先靜態(tài)后對象)
c.主函數(shù)是靜態(tài)的
6.怎么用凡辱? 直接用于修飾成員冈欢。
什么時候用?
成員變量:該數(shù)據在所有對象中都一樣時,直接靜態(tài)修飾。
成員函數(shù):如果函數(shù)沒有訪問過對象中的屬性數(shù)據,那么該函數(shù)就是靜態(tài)的盗飒。
7.成員變量和靜態(tài)變量的區(qū)別:
a.名稱不同:成員變量叫做實例變量,靜態(tài)變量就做類變量/
b.內存存儲:成員變量存儲在堆內存的對象中陋桂,而靜態(tài)變量存儲在方法區(qū)的靜態(tài)區(qū)中逆趣。
c.生命周期不同:成員變量隨著對象出現(xiàn)而出現(xiàn)、消失而消失嗜历;而靜態(tài)變量隨著類的出現(xiàn)而出現(xiàn)汗贫,消失而消失。
8.靜態(tài)代碼塊:隨著類的加載秸脱,而且只執(zhí)行一次落包。
class staticCode {
static //靜態(tài)代碼塊
{
syso("A")
}}
作用:給類初始化
應用場景:類不需要創(chuàng)建對象,但需要初始化摊唇。
這是將部分代碼存儲到靜態(tài)代碼塊中咐蝇。
9.構造代碼塊:
class Person
{
private int age;
{//前面無static'修飾,為構造代碼塊巷查,可以給所有創(chuàng)建的對象初始化有序。
System.....
}
}
10.創(chuàng)建一個對象的流程(day07)
a.加載制定的字節(jié)碼文件進內存。
b.通過new在對內存中開辟空間岛请,分配首地址值旭寿。
c.對對象中的屬性進行默認初始化。
d.調用與之對性的構造函數(shù)崇败,構造函數(shù)壓棧盅称。
e.構造函數(shù)中執(zhí)行隱式的語句super()訪問父類中的構造函數(shù)肩祥。
f.對屬性進行顯示初始化。
g.調用類中的構造代碼塊缩膝。
h.執(zhí)行構造函數(shù)中自定義的初始化代碼混狠。
i.初始化完畢,將地址賦給指定的引用疾层。
11.主函數(shù)中的局部代碼塊可以控制局部變量生命周期将饺。
12.靜態(tài)代碼塊:只執(zhí)行一次。::::構造代碼塊:每次構造方法都執(zhí)行
靜態(tài)先執(zhí)行與動態(tài)痛黎。