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

Java 梳理總結(jié)關(guān)于static關(guān)鍵字常見問題

 更新時間:2022年04月07日 13:24:27   作者:崇尚學技術(shù)的科班人  
static關(guān)鍵字基本概念我們可以一句話來概括:方便在沒有創(chuàng)建對象的情況下來進行調(diào)用。也就是說:被static關(guān)鍵字修飾的不需要創(chuàng)建對象去調(diào)用,直接根據(jù)類名就可以去訪問,讓我們來了解一下你可能還不知道情況

1、static是什么意思?

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

例如

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("靜態(tài)方法調(diào)用:f的值為" + f);
    }
}

測試方法

import com.xiao.Main;

public class Test {

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

輸出結(jié)果

靜態(tài)變量:10

靜態(tài)方法調(diào)用:f的值為10

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

2、為什么使用static關(guān)鍵字?

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

  • 通常來說,用 new 創(chuàng)建類的對象時,數(shù)據(jù)存儲空間才被分配,方法才供外界調(diào)用。但有時我們只想為特定域分配單一存儲空間,不考慮要創(chuàng)建多少對象或者說根本就不創(chuàng)建任何對象。
  • 再就是我們想在沒有創(chuàng)建對象的情況下也想使用變量和調(diào)用方法。

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

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

4、是否可以在static環(huán)境中訪問非static變量?

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

5、static靜態(tài)方法能不能引用非靜態(tài)資源?

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

6、static靜態(tài)方法里面能不能引用靜態(tài)資源?

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

7、非靜態(tài)方法里面能不能引用靜態(tài)資源?

能。因為靜態(tài)資源會在類被 Java 虛擬機加載的時候就一起被加載和初始化好,而非靜態(tài)方法是當實例對象被創(chuàng)建的時候才會被創(chuàng)建和初始化,所以當非靜態(tài)方法被創(chuàng)建和初始化的時候?qū)?yīng)的靜態(tài)資源已經(jīng)存在了。所以非靜態(tài)方法里面能引用靜態(tài)資源。

8、java靜態(tài)變量、代碼塊、和靜態(tài)方法的執(zhí)行順序是什么?

  • 代碼塊執(zhí)行順序:靜態(tài)代碼塊——> 構(gòu)造代碼塊 ——> 構(gòu)造函數(shù)——> 普通代碼塊
  • 繼承中代碼塊執(zhí)行順序:父類靜態(tài)塊——>子類靜態(tài)塊——>父類構(gòu)造代碼塊——>父類構(gòu)造器——>子類構(gòu)造代碼塊——>子類構(gòu)造器。

Main類

package com.xiao;

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


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

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

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

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

    //普通初始化塊
    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();
    }
}

測試結(jié)果

靜態(tài)代碼塊....

構(gòu)造代碼塊....

無參構(gòu)造器....

普通初始化塊....

到此這篇關(guān)于Java 梳理總結(jié)關(guān)于static關(guān)鍵字常見問題的文章就介紹到這了,更多相關(guān)Java static關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

斗六市| 肃南| 黑龙江省| 荥经县| 桐庐县| 民勤县| 阳山县| 东乌珠穆沁旗| 共和县| 湖北省| 柘荣县| 溧水县| 蓬莱市| 泉州市| 忻州市| 甘肃省| 加查县| 灵川县| 武宁县| 闻喜县| 甘泉县| 涟源市| 会昌县| 黄大仙区| 思茅市| 南陵县| 志丹县| 阜阳市| 治多县| 重庆市| 罗源县| 板桥市| 岱山县| 孝义市| 正阳县| 岫岩| 怀宁县| 八宿县| 林西县| 宁国市| 常州市|