溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中Static關(guān)鍵字使用的方法有哪些

發(fā)布時間:2023-03-27 15:30:47 來源:億速云 閱讀:128 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Java中Static關(guān)鍵字使用的方法有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Java中Static關(guān)鍵字使用的方法有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

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

修飾成員變量

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

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

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

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

修飾成員方法

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

簡單的來說被static修飾的方法,可以認(rè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!");
    }
}

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

修飾內(nèi)部類

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

  • 靜態(tài)內(nèi)部類可以包含靜態(tài)成員,也可以包含非靜態(tài)成員,但是在非靜態(tài)內(nèi)部類中不可以聲明靜態(tài)成員。

  • 靜態(tài)類內(nèi)部不可以訪問外部類的實例成員,只能訪問外部類的類成員,即使是靜態(tài)內(nèi)部類的實例方法也不能訪問外部類的實例成員,只能訪問外部類的靜態(tài)成員

  • 外部類不可以定義為靜態(tài)類,Java中靜態(tài)類只有一種,那就是靜態(tài)內(nèi)部類,頂級類不能用static 修飾

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

  1. 外部類可以通過創(chuàng)建靜態(tài)內(nèi)部類實例的方法來調(diào)用靜態(tài)內(nèi)部類的非靜態(tài)屬性和方法

  2. 外部類可以直接通過“ 外部類.內(nèi)部類.屬性(方法)” 的方式直接調(diào)用靜態(tài)內(nèi)部類中的靜態(tài)屬性和方法

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

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

  • 在其他類中:使用外部類.內(nèi)部類 name = new 外部類.內(nèi)部構(gòu)造器;

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

Java中Static關(guān)鍵字使用的方法有哪些

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

  1. 靜態(tài)代碼塊和靜態(tài)屬性的順序執(zhí)行

  2. 非靜態(tài)屬性的執(zhí)行

  3. 方法的調(diào)用

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

Java中Static關(guān)鍵字使用的方法有哪些

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

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

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

  • 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!”的一行輸出。

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

讀到這里,這篇“Java中Static關(guān)鍵字使用的方法有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI