java中static关键字简介
static靜態(tài)關(guān)鍵字:
static關(guān)鍵字可以修飾成員變量和成員方法,被修飾的成員是屬于類(lèi)的,而不是簡(jiǎn)簡(jiǎn)單單的屬于某個(gè)對(duì)象,也就是說(shuō)可以不用通過(guò)對(duì)象調(diào)用,而是通過(guò)類(lèi)直接調(diào)用。
類(lèi)變量(靜態(tài)變量):被static修飾的成員變量稱(chēng)為類(lèi)變量。當(dāng)創(chuàng)建對(duì)象后,各個(gè)對(duì)象都共享同一個(gè)類(lèi)變量的值,任何對(duì)象都可以更改類(lèi)變量的值,也可以在不創(chuàng)建對(duì)象的情況下對(duì)該類(lèi)進(jìn)行操作。
靜態(tài)方法:被static修飾的方法稱(chēng)為靜態(tài)方法,此方法不屬于對(duì)象,而是屬于類(lèi)。靜態(tài)方法不能直接訪(fǎng)問(wèn)成員變量和成員方法,可以直接訪(fǎng)問(wèn)類(lèi)變量和靜態(tài)方法;靜態(tài)方法中不能使用this關(guān)鍵字
定義一個(gè)包含靜態(tài)變量和靜態(tài)方法的類(lèi):
// 定義一個(gè)有static關(guān)鍵字修飾成員變量的標(biāo)準(zhǔn)類(lèi): public class StaticKey{// 定義成員變量:private String names;private int age;// 定義成員方法:public String gowhere(){return ",通過(guò)成員方方法去水立方";}// 1-1.類(lèi)變量的定義格式:static 數(shù)據(jù)類(lèi)型 變量名,如:static String bus;//類(lèi)變量可以直接通過(guò)類(lèi)名點(diǎn).訪(fǎng)問(wèn),也可以通過(guò)對(duì)象.訪(fǎng)問(wèn),但是不推薦使用對(duì)象訪(fǎng)問(wèn)// 1-2.靜態(tài)方法的定義格式:修飾符 static 返回值類(lèi)型 方法名(){},如:public static String gowherestatic(){// System.out.println(this.names+"通過(guò)靜態(tài)方法去迪士尼");靜態(tài)方法不能直接訪(fǎng)問(wèn)成員變量和成員方法,也不能使用this關(guān)鍵字,靜態(tài)方法只能訪(fǎng)問(wèn)靜態(tài)成員。return ",通過(guò)靜態(tài)方法去迪士尼";}// 2.該類(lèi)的無(wú)參數(shù)構(gòu)造方法:每創(chuàng)建一次對(duì)象就會(huì)執(zhí)行一次該構(gòu)造方法public StaticKey(){System.out.println("無(wú)參數(shù)構(gòu)造方法執(zhí)行了");}// 3.該類(lèi)的全參數(shù)構(gòu)造方法:public StaticKey(String na,int ag){this.names = na;this.age = ag;}// 4.names成員變量的get-和set-方法:public String getNames(){return names;}public void setNames(String na){this.names = na;}// 5.age成員變量的get-和set-方法:public int getAge(){return age;}public void setAge(int ag){this.age = ag;} }通過(guò)上面的類(lèi)實(shí)例化對(duì)象:
public class Passenger{public static void main(String[] args){// 1.通過(guò)StaticKey類(lèi)實(shí)例化對(duì)象:StaticKey passenger1 = new StaticKey("jack",18);StaticKey passenger2 = new StaticKey("sherry",17);// 沒(méi)創(chuàng)建一次對(duì)象就會(huì)執(zhí)行一次無(wú)參數(shù)構(gòu)造方法,打印2次:全參數(shù)構(gòu)造方法執(zhí)行了// 2.訪(fǎng)問(wèn)類(lèi)變量:(不推薦通過(guò)對(duì)象訪(fǎng)問(wèn)類(lèi)變量)passenger1.bus = "大巴-001";// 3-1.測(cè)試:通過(guò)對(duì)象訪(fǎng)問(wèn)類(lèi)變量(不推薦使用)System.out.println("姓名:"+passenger1.getNames()+",年齡:"+passenger1.getAge()+",大巴:"+passenger1.bus);//姓名:jack,年齡:18,大巴:大巴-001System.out.println("姓名:"+passenger2.getNames()+",年齡:"+passenger2.getAge()+",大巴:"+passenger2.bus);//姓名:sherry,年齡:17,大巴:大巴-001// 3-2:通過(guò)類(lèi)直接訪(fǎng)問(wèn)類(lèi)變量:(推薦使用)StaticKey.bus = "大巴-002";System.out.println("姓名:"+passenger1.getNames()+",年齡:"+passenger1.getAge()+",大巴更改為:"+StaticKey.bus);//姓名:jack,年齡:18,大巴更改為:大巴-002System.out.println("姓名:"+passenger2.getNames()+",年齡:"+passenger2.getAge()+",大巴更改為:"+StaticKey.bus);//姓名:sherry,年齡:17,大巴更改為:大巴-002// 4-1:通過(guò)對(duì)象調(diào)用成員方法:System.out.println("姓名:"+passenger1.getNames()+",年齡:"+passenger1.getAge()+",大巴更改為:"+StaticKey.bus+passenger1.gowhere());//姓名:jack,年齡:18,大巴更改為:大巴-002,通過(guò)成員方方法去水立方System.out.println("姓名:"+passenger2.getNames()+",年齡:"+passenger2.getAge()+",大巴更改為:"+StaticKey.bus+passenger2.gowhere());//姓名:sherry,年齡:17,大巴更改為:大巴-002,通過(guò)成員方方法去水立方// 4-2:通過(guò)對(duì)象調(diào)用靜態(tài)方法,不推薦使用,推薦使用類(lèi)調(diào)用靜態(tài)方法:(通過(guò)對(duì)象訪(fǎng)問(wèn)靜態(tài)方法最終會(huì)被編譯為通過(guò)類(lèi)訪(fǎng)問(wèn)靜態(tài)方法)System.out.println("姓名:"+passenger1.getNames()+",年齡:"+passenger1.getAge()+",大巴更改為:"+StaticKey.bus+passenger1.gowherestatic());//姓名:jack,年齡:18,大巴更改為:大巴-002,通過(guò)靜態(tài)方法去迪士尼 System.out.println("姓名:"+passenger2.getNames()+",年齡:"+passenger2.getAge()+",大巴更改為:"+StaticKey.bus+passenger2.gowherestatic());//姓名:sherry,年齡:17,大巴更改為:大巴-002,通過(guò)靜態(tài)方法去迪士尼 System.out.println("姓名:"+passenger1.getNames()+",年齡:"+passenger1.getAge()+",大巴更改為:"+StaticKey.bus+StaticKey.gowherestatic());//姓名:jack,年齡:18,大巴更改為:大巴-002,通過(guò)靜態(tài)方法去迪士尼 System.out.println("姓名:"+passenger2.getNames()+",年齡:"+passenger2.getAge()+",大巴更改為:"+StaticKey.bus+StaticKey.gowherestatic());//姓名:sherry,年齡:17,大巴更改為:大巴-002,通過(guò)靜態(tài)方法去迪士尼/*總結(jié):成員方法可以訪(fǎng)問(wèn)成員變量和靜態(tài)變量,靜態(tài)方法不能直接訪(fǎng)問(wèn)非靜態(tài),因?yàn)樵趦?nèi)存中是先有靜態(tài)內(nèi)容,后有非靜態(tài)內(nèi)容的,即前者無(wú)法訪(fǎng)問(wèn)后者,后者可以訪(fǎng)問(wèn)前者。訪(fǎng)問(wèn)靜態(tài)時(shí),與對(duì)象無(wú)關(guān),在內(nèi)存中直接通過(guò)方法區(qū)-靜態(tài)區(qū)訪(fǎng)問(wèn),而不是通過(guò)某個(gè)對(duì)象間接訪(fǎng)問(wèn)。*/} }靜態(tài)代碼塊:
直接在類(lèi)中通過(guò)關(guān)鍵字static修飾大括號(hào),特點(diǎn):在某個(gè)java文件中第一次用到本類(lèi)時(shí)只會(huì)執(zhí)行一次,再使用此類(lèi)將不再執(zhí)行靜態(tài)代碼塊中的內(nèi)容(另一個(gè)java文件中會(huì)再次執(zhí)行),如:
使用靜態(tài)代碼塊類(lèi)的實(shí)例對(duì)象:
public class StaticBlockObj{public static void main(String[] args){StaticBlock staticblock = new StaticBlock();StaticBlock staticblock2 = new StaticBlock();} }另一個(gè)java文件源碼:
public class StaticBlockObj2{public static void main(String[] args){StaticBlock staticblock = new StaticBlock();StaticBlock staticblock2 = new StaticBlock();} }提示:本文圖片等素材來(lái)源于網(wǎng)絡(luò),若有侵權(quán),請(qǐng)發(fā)郵件至郵箱:810665436@qq.com聯(lián)系筆者刪除。
筆者:苦海
總結(jié)
以上是生活随笔為你收集整理的java中static关键字简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ReactNative简介、开发环境、调
- 下一篇: 杭州保俶塔实验机器人_【科教有闻】高照实