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

Java中Static關鍵字的五種用法詳解

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

Static的五種用法大致如下:

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

 直接一點,static關鍵字就是把屬性和方法變?yōu)轭愊嚓P,而不是實例相關。

修飾成員變量

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

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);
    }
}

成員變量不給初始值的話,會進行默認初始化。

 被static修飾的屬性,可以認為是屬于類的,只要類進行加載以后,便可以使用類名.屬性名進行調用。

修飾成員方法

被static關鍵字修飾的方法叫做類方法,修飾后的方法可以直接使類名.方法名調用,減少了實例化對象進行調用的資源消耗。

簡單的來說被static修飾的方法,可以認為是屬于類的,只要類進行加載以后,則就可以進行使用。

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!");
    }
}

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

修飾內部類

被static修飾的內部類完全獨立于其所在的外部類,不屬于外部類的對象,可以認為兩個類是完全沒有關系的兩個類。

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

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

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

 創(chuàng)建一個靜態(tài)內部類實例:

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

靜態(tài)代碼塊

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

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í)行后的結果如下所示:

則我們可以判斷出執(zhí)行的順序為:

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

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

這里我們就無法調用到age屬性

靜態(tài)導包

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

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

 運行Test類中的main方法后,就能在控制臺看到“hello codermast!”的一行輸出。

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

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

相關文章

  • Java 基礎語法中的邏輯控制

    Java 基礎語法中的邏輯控制

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

    Spring Boot2讀取配置常用方法代碼實例

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

    關于SpringBoot3.x中spring.factories功能被移除的解決方案

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

    SpringBoot之攔截器與過濾器解讀

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

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

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

    SpringMVC中文亂碼踩坑記錄

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

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

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

    Java中csv文件讀寫超詳細分析

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

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

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

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

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

最新評論

汝州市| 濉溪县| 辰溪县| 灵台县| 东源县| 永康市| 南川市| 北川| 芒康县| 交城县| 慈溪市| 大英县| 中西区| 闻喜县| 浮山县| 成安县| 清苑县| 彩票| 中卫市| 西乌珠穆沁旗| 苏尼特右旗| 望奎县| 曲周县| 水富县| 阳春市| 阿鲁科尔沁旗| 凉山| 崇阳县| 获嘉县| 昌平区| 荆州市| 龙南县| 五莲县| 柘荣县| 福贡县| 长汀县| 白朗县| 通辽市| 广州市| 溧阳市| 晋宁县|