中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Java中static關鍵字的常見問題有哪些

發布時間:2022-04-07 15:49:39 來源:億速云 閱讀:152 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Java中static關鍵字的常見問題有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java中static關鍵字的常見問題有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

1、static是什么意思?

static 關鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實例變量的情況下被訪問。

例如

Main類

package com.xiao;

/**
 * @author :小肖
 * @date :Created in 2022/3/11 12:37
 */
public class Main {

    public static int f = 10;


    public static void show(){
        System.out.println("靜態方法調用:f的值為" + f);
    }
}

測試方法

import com.xiao.Main;

public class Test {

    public static void main(String[] args) {
        System.out.println("靜態變量:" + Main.f);
        Main.show();
    }
}

輸出結果

靜態變量:10

靜態方法調用:f的值為10

通過上述實例可以發現,我們并沒有創建對象實例就可以對 Main類 中的被 static 修飾的變量和方法進行調用。所以 static 關鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實例變量的情況下被訪問。

2、為什么使用static關鍵字?

在以下兩種情況下,static 關鍵字,滿足了我們的需求。

  • 通常來說,用 new 創建類的對象時,數據存儲空間才被分配,方法才供外界調用。但有時我們只想為特定域分配單一存儲空間,不考慮要創建多少對象或者說根本就不創建任何對象。

  • 再就是我們想在沒有創建對象的情況下也想使用變量和調用方法。

3、Java中是否可以覆蓋(override)一個private或者是static的方法?

Java中 static 方法不能被覆蓋,因為方法覆蓋是基于運行時動態綁定的,而 static 方法是編譯時靜態綁定的(就是當類被 Java 虛擬機加載的時候,該靜態方法就會被連同類一起被加載,所以靜態方法是屬于類的,同時是編譯時靜態綁定的)。static 方法跟類的任何實例都不相關,所以概念上不適用。

4、是否可以在static環境中訪問非static變量?

static 變量在Java中是屬于類的,它在所有的實例中的值是一樣的。當類被Java虛擬機載入的時候,會對 static 變量進行初始化。如果你的代碼嘗試不用實例來訪問非static的變量,編譯器會報錯,因為這些變量還沒有被創建出來,還沒有跟任何實例關聯上。

5、static靜態方法能不能引用非靜態資源?

不能。就是當類被 Java 虛擬機加載的時候,該靜態方法就會被連同類一起被加載和初始化,所以靜態方法是屬于類的。而非靜態資源的話,只有在創建了對應的實例之后才會被創建。而類的加載和初始化過程是在實例對象創建之前發生的,所以如果靜態方法引用了根本就不存在的非靜態資源的話,那么就會報出錯誤。

6、static靜態方法里面能不能引用靜態資源?

能。因為當類被 Java 虛擬機加載的時候, static 靜態方法和靜態資源會連同類一起被加載和初始化,那么此時 static 靜態方法可以訪問到對應的靜態資源。所以 static 靜態方法里面能引用靜態資源。

7、非靜態方法里面能不能引用靜態資源?

能。因為靜態資源會在類被 Java 虛擬機加載的時候就一起被加載和初始化好,而非靜態方法是當實例對象被創建的時候才會被創建和初始化,所以當非靜態方法被創建和初始化的時候對應的靜態資源已經存在了。所以非靜態方法里面能引用靜態資源。

8、java靜態變量、代碼塊、和靜態方法的執行順序是什么?

  • 代碼塊執行順序:靜態代碼塊——> 構造代碼塊 ——> 構造函數——> 普通代碼塊

  • 繼承中代碼塊執行順序:父類靜態塊——>子類靜態塊——>父類構造代碼塊——>父類構造器——>子類構造代碼塊——>子類構造器。

Main類

package com.xiao;

/**
 * @author :小肖
 * @date :Created in 2022/3/11 12:37
 */
public class Main {


    private Integer a;
    //靜態代碼塊
    static {
        System.out.println("靜態代碼塊....");
    }

    //無參構造器
    public Main(){
        System.out.println("無參構造器....");
    }

    // 有參構造
    public Main(Integer a){
        this.a = a;
        System.out.println("有參構造器....");
    }

    // 構造代碼塊
    {
        System.out.println("構造代碼塊....");
    }

    //普通初始化塊
    public void method(){
        System.out.println("普通初始化塊....");
    }
}

測試類

import com.xiao.Main;

public class Test {

    public static void main(String[] args) {
        Main main = new Main();
        main.method();
    }
}

測試結果

靜態代碼塊....

構造代碼塊....

無參構造器....

普通初始化塊....

讀到這里,這篇“Java中static關鍵字的常見問題有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑山县| 襄垣县| 金门县| 安西县| 凤翔县| 望谟县| 连州市| 大方县| 穆棱市| 青神县| 建湖县| 靖远县| 留坝县| 涞源县| 登封市| 洱源县| 林西县| 小金县| 平乡县| 柳林县| 兴宁市| 罗定市| 曲麻莱县| 阿拉善左旗| 电白县| 宜城市| 凌海市| 平遥县| 徐州市| 定州市| 深泽县| 阜康市| 巴东县| 将乐县| 乌恰县| 阿克苏市| 涪陵区| 林甸县| 宕昌县| 平武县| 太保市|