最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Static關(guān)鍵字的五種用法詳解

 更新時(shí)間:2023年03月27日 14:07:31   作者:永遠(yuǎn)別禿頭  
這篇文章主要介紹了Java中static的五種用法:修飾成員變量,修飾成員方法,修飾內(nèi)部類(lèi),靜態(tài)代碼塊,靜態(tài)導(dǎo)包,想詳細(xì)了解的小伙伴可以參考閱讀本文

Static的五種用法大致如下:

  • 修飾成員變量,使其成為類(lèi)變量,也叫靜態(tài)變量
  • 修飾成員方法,使其成為類(lèi)方法
  • 修飾內(nèi)部類(lèi),使其成為靜態(tài)內(nèi)部類(lèi)
  • 靜態(tài)代碼塊
  • 靜態(tài)導(dǎo)包

 直接一點(diǎn),static關(guān)鍵字就是把屬性和方法變?yōu)轭?lèi)相關(guān),而不是實(shí)例相關(guān)。

修飾成員變量

被static關(guān)鍵字修飾的屬性叫做靜態(tài)屬性,也叫類(lèi)屬性。顧名思義現(xiàn)在該屬性為該類(lèi)所有,而非該類(lèi)實(shí)例化的對(duì)象所有,在類(lèi)的加載階段進(jìn)行初始化。雖然使用類(lèi)實(shí)例化的對(duì)象也能夠調(diào)用該屬性,但是該屬性是屬于類(lèi)所有,所有該類(lèi)的實(shí)例化對(duì)象和該類(lèi)共享一個(gè)值,即操作的是同一個(gè)值。

public class Person{
  	static int age;
  	static int high = 175;
    public static void main(String[] args){
        System.out.println(age);
        System.out.println(high);
    }
}

class PersonTest{
    public static void main(String[] args){
        System.out.println(Person.age);
    }
}

成員變量不給初始值的話,會(huì)進(jìn)行默認(rèn)初始化。

 被static修飾的屬性,可以認(rèn)為是屬于類(lèi)的,只要類(lèi)進(jìn)行加載以后,便可以使用類(lèi)名.屬性名進(jìn)行調(diào)用。

修飾成員方法

被static關(guān)鍵字修飾的方法叫做類(lèi)方法,修飾后的方法可以直接使類(lèi)名.方法名調(diào)用,減少了實(shí)例化對(duì)象進(jìn)行調(diào)用的資源消耗。

簡(jiǎn)單的來(lái)說(shuō)被static修飾的方法,可以認(rèn)為是屬于類(lèi)的,只要類(lèi)進(jìn)行加載以后,則就可以進(jìn)行使用。

public class Person{
  	static int age;
  	static int high = 175;
  	public static void seeMessage(String msg){
      	System.out.println(msg);
    }
}

class PersonTest{
    public static void main(String[] args){
        Person.seeMessage("Hello Codermast!");
    }
}

這里需要注意的是一個(gè)靜態(tài)方法是不能夠直接調(diào)用同類(lèi)下的非靜態(tài)方法,而同類(lèi)下的非靜態(tài)方法則可以調(diào)用同類(lèi)下的靜態(tài)方法。

修飾內(nèi)部類(lèi)

被static修飾的內(nèi)部類(lèi)完全獨(dú)立于其所在的外部類(lèi),不屬于外部類(lèi)的對(duì)象,可以認(rèn)為兩個(gè)類(lèi)是完全沒(méi)有關(guān)系的兩個(gè)類(lèi)。

  • 靜態(tài)內(nèi)部類(lèi)可以包含靜態(tài)成員,也可以包含非靜態(tài)成員,但是在非靜態(tài)內(nèi)部類(lèi)中不可以聲明靜態(tài)成員。
  • 靜態(tài)類(lèi)內(nèi)部不可以訪問(wèn)外部類(lèi)的實(shí)例成員,只能訪問(wèn)外部類(lèi)的類(lèi)成員,即使是靜態(tài)內(nèi)部類(lèi)的實(shí)例方法也不能訪問(wèn)外部類(lèi)的實(shí)例成員,只能訪問(wèn)外部類(lèi)的靜態(tài)成員
  • 外部類(lèi)不可以定義為靜態(tài)類(lèi),Java中靜態(tài)類(lèi)只有一種,那就是靜態(tài)內(nèi)部類(lèi),頂級(jí)類(lèi)不能用static 修飾

 外部類(lèi)如何調(diào)用靜態(tài)內(nèi)部類(lèi)的屬性和方法:

  1. 外部類(lèi)可以通過(guò)創(chuàng)建靜態(tài)內(nèi)部類(lèi)實(shí)例的方法來(lái)調(diào)用靜態(tài)內(nèi)部類(lèi)的非靜態(tài)屬性和方法
  2. 外部類(lèi)可以直接通過(guò)“ 外部類(lèi).內(nèi)部類(lèi).屬性(方法)” 的方式直接調(diào)用靜態(tài)內(nèi)部類(lèi)中的靜態(tài)屬性和方法

 創(chuàng)建一個(gè)靜態(tài)內(nèi)部類(lèi)實(shí)例:

  • 在外部類(lèi)中:直接使用類(lèi)名創(chuàng)建即可,內(nèi)部類(lèi)名 name = new 內(nèi)部類(lèi)構(gòu)造器;
  • 在其他類(lèi)中:使用外部類(lèi).內(nèi)部類(lèi) name = new 外部類(lèi).內(nèi)部構(gòu)造器;

靜態(tài)代碼塊

static修飾代碼塊的作用就是,在類(lèi)加載以后進(jìn)行執(zhí)行這段代碼。我們需要著重看一下具體的執(zhí)行順序。下面是一個(gè)簡(jiǎn)單的示例。

class Dog {
    String name;
    public Dog(String name) {
        this.name = name;
        System.out.println("狗的名字叫:" + name);
    }
}

class Person {
    String name;
    public Person(String name){
        this.name = name;
        System.out.println("人的名字叫:" + name);
    }

    static int age = 18;

    static {
        System.out.println("靜態(tài)代碼塊1執(zhí)行...");
    }

    static Dog xiaohuang = new Dog("小黃");

    Dog xiaohua = new Dog("小花");
    static {
        System.out.println("靜態(tài)代碼塊2執(zhí)行...");
    }

    static int high = 175;

    Dog xiaohei = new Dog("小黑");

    static Dog xiaobai = new Dog("小白");


    public static void main(String[] args) {
        Person person = new Person("codermast");
    }
}

該示例執(zhí)行后的結(jié)果如下所示:

則我們可以判斷出執(zhí)行的順序?yàn)椋?/p>

  1. 靜態(tài)代碼塊和靜態(tài)屬性的順序執(zhí)行
  2. 非靜態(tài)屬性的執(zhí)行
  3. 方法的調(diào)用

 這里主要解釋第一點(diǎn),靜態(tài)代碼塊和靜態(tài)屬性屬于同一優(yōu)先級(jí),順序執(zhí)行。舉個(gè)簡(jiǎn)單的例子即可理解:

這里我們就無(wú)法調(diào)用到age屬性

靜態(tài)導(dǎo)包

靜態(tài)導(dǎo)包用法,將類(lèi)的方法直接導(dǎo)入到當(dāng)前類(lèi)中,從而直接使用“方法名”即可調(diào)用類(lèi)方法,更加方便。

  • PrintMsg類(lèi)
public class PrintMsg{
  	public static void printMsg(String msg){
      	System.out.println(msg)
    }
}
  • Test類(lèi)
import static codermast.util.PrintMsg.*;
public class Test{
  	public static void main(String[] args){
      	printMsg("hello codermast!")
    }
}

 運(yùn)行Test類(lèi)中的main方法后,就能在控制臺(tái)看到“hello codermast!”的一行輸出。

需要注意的是:導(dǎo)入的靜態(tài)方法所處的類(lèi),不能和調(diào)用的類(lèi)在同一個(gè)包下。

 到此這篇關(guān)于Java中Static關(guān)鍵字的五種用法詳解的文章就介紹到這了,更多相關(guān)Java中Static用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 基礎(chǔ)語(yǔ)法中的邏輯控制

    Java 基礎(chǔ)語(yǔ)法中的邏輯控制

    這篇文章主要介紹了Java 基礎(chǔ)語(yǔ)法中的邏輯控制的相關(guān)資料,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • Spring Boot2讀取配置常用方法代碼實(shí)例

    Spring Boot2讀取配置常用方法代碼實(shí)例

    這篇文章主要介紹了Spring Boot2讀取配置常用方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 關(guān)于SpringBoot3.x中spring.factories功能被移除的解決方案

    關(guān)于SpringBoot3.x中spring.factories功能被移除的解決方案

    這篇文章主要介紹了SpringBoot3.x中spring.factories功能被移除的解決方案,在配置好相關(guān)依賴、最小啟動(dòng)類(lèi)和配置之后,發(fā)現(xiàn)項(xiàng)目無(wú)法啟動(dòng),于是根據(jù)啟動(dòng)上下文日志和按行DEBUG找到原因并且在等待組件升級(jí)兼容之前進(jìn)行臨時(shí)性解決,需要的朋友可以參考下
    2022-12-12
  • SpringBoot之?dāng)r截器與過(guò)濾器解讀

    SpringBoot之?dāng)r截器與過(guò)濾器解讀

    這篇文章主要介紹了SpringBoot之?dāng)r截器與過(guò)濾器解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringMVC適配器模式作用范圍介紹

    SpringMVC適配器模式作用范圍介紹

    適配器這個(gè)詞我們應(yīng)該很熟悉,天天都在使用,手機(jī)充電時(shí),電源線頭頭就叫電源適配器,干什么用的呢?把220V電壓轉(zhuǎn)換成手機(jī)充電時(shí)使用的電壓,那么適配器是不是很好理解了,下面看一下
    2023-04-04
  • SpringMVC中文亂碼踩坑記錄

    SpringMVC中文亂碼踩坑記錄

    這篇文章主要介紹了SpringMVC中文亂碼踩坑記錄,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • IDEA實(shí)用好用插件推薦及使用方法教程詳解(必看)

    IDEA實(shí)用好用插件推薦及使用方法教程詳解(必看)

    這篇文章主要介紹了IDEA實(shí)用好用插件推薦及使用方法教程,本文通過(guò)實(shí)例截圖相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java中csv文件讀寫(xiě)超詳細(xì)分析

    Java中csv文件讀寫(xiě)超詳細(xì)分析

    CSV是一種通用的、相對(duì)簡(jiǎn)單的文件格式,其文件以純文本形式存儲(chǔ)表格數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Java中csv文件讀寫(xiě)分析的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Java?Rabbitmq中四種集群架構(gòu)的區(qū)別詳解

    Java?Rabbitmq中四種集群架構(gòu)的區(qū)別詳解

    這篇文章主要為大家詳細(xì)介紹了Java?Rabbitmq中四種集群架構(gòu)的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 面試時(shí)必問(wèn)的JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)詳解

    面試時(shí)必問(wèn)的JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)詳解

    這篇文章主要介紹了JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

大兴区| 英超| 沛县| 阿瓦提县| 吉安市| 贡觉县| 阳西县| 中牟县| 浦东新区| 泰兴市| 嘉黎县| 楚雄市| 阳春市| 博野县| 通江县| 桦南县| 万山特区| 沂水县| 克什克腾旗| 固阳县| 门源| 恩平市| 芮城县| 宣恩县| 班戈县| 嘉善县| 宜昌市| 桐梓县| 游戏| 高州市| 玉溪市| 澄城县| 东乌珠穆沁旗| 中卫市| 黑龙江省| 昌都县| 赫章县| 顺平县| 武川县| 绥中县| 建平县|