欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1、static是什么意思?

static 關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒有所屬的類的實(shí)例變量的情況下被訪問(wè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);
    }
}

測(cè)試方法

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

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

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

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

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

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

Java中 static 方法不能被覆蓋,因?yàn)榉椒ǜ采w是基于運(yùn)行時(shí)動(dòng)態(tài)綁定的,而 static 方法是編譯時(shí)靜態(tài)綁定的(就是當(dāng)類被 Java 虛擬機(jī)加載的時(shí)候,該靜態(tài)方法就會(huì)被連同類一起被加載,所以靜態(tài)方法是屬于類的,同時(shí)是編譯時(shí)靜態(tài)綁定的)。static 方法跟類的任何實(shí)例都不相關(guān),所以概念上不適用。

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

static 變量在Java中是屬于類的,它在所有的實(shí)例中的值是一樣的。當(dāng)類被Java虛擬機(jī)載入的時(shí)候,會(huì)對(duì) static 變量進(jìn)行初始化。如果你的代碼嘗試不用實(shí)例來(lái)訪問(wèn)非static的變量,編譯器會(huì)報(bào)錯(cuò),因?yàn)檫@些變量還沒有被創(chuàng)建出來(lái),還沒有跟任何實(shí)例關(guān)聯(lián)上。

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

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

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

能。因?yàn)楫?dāng)類被 Java 虛擬機(jī)加載的時(shí)候, static 靜態(tài)方法和靜態(tài)資源會(huì)連同類一起被加載和初始化,那么此時(shí) static 靜態(tài)方法可以訪問(wèn)到對(duì)應(yīng)的靜態(tài)資源。所以 static 靜態(tài)方法里面能引用靜態(tài)資源。

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

能。因?yàn)殪o態(tài)資源會(huì)在類被 Java 虛擬機(jī)加載的時(shí)候就一起被加載和初始化好,而非靜態(tài)方法是當(dāng)實(shí)例對(duì)象被創(chuàng)建的時(shí)候才會(huì)被創(chuàng)建和初始化,所以當(dāng)非靜態(tài)方法被創(chuàng)建和初始化的時(shí)候?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)代碼塊....");
    }

    //無(wú)參構(gòu)造器
    public Main(){
        System.out.println("無(wú)參構(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("普通初始化塊....");
    }
}

測(cè)試類

import com.xiao.Main;

public class Test {

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

測(cè)試結(jié)果

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

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

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

普通初始化塊....

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

相關(guān)文章

  • java連接Access數(shù)據(jù)庫(kù)的方法

    java連接Access數(shù)據(jù)庫(kù)的方法

    這篇文章主要為大家詳細(xì)介紹了java連接Access數(shù)據(jù)庫(kù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 淺談一下Java中集合的迭代方式

    淺談一下Java中集合的迭代方式

    這篇文章主要介紹了淺談一下Java中集合的迭代方式,可以幫助我們學(xué)習(xí),理解函數(shù)式編程,需要的朋友可以參考下
    2023-04-04
  • 一篇文章帶你入門Java方法詳解

    一篇文章帶你入門Java方法詳解

    這篇文章主要介紹了簡(jiǎn)單了解Java方法的定義和使用實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • java.math.BigDecimal的用法及加減乘除計(jì)算

    java.math.BigDecimal的用法及加減乘除計(jì)算

    這篇文章主要介紹了java.math.BigDecimal的用法及加減乘除計(jì)算,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Springboot+netty實(shí)現(xiàn)Web聊天室

    Springboot+netty實(shí)現(xiàn)Web聊天室

    這篇文章主要介紹了利用springboot+netty實(shí)現(xiàn)一個(gè)簡(jiǎn)單Web聊天室,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-12-12
  • 深入理解Java 線程通信

    深入理解Java 線程通信

    這篇文章主要介紹了Java 線程通信的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Mybatis的核心架構(gòu)及源碼解讀

    Mybatis的核心架構(gòu)及源碼解讀

    這篇文章主要介紹了Mybatis的核心架構(gòu)及源碼解讀,mybatis是一款半自動(dòng)化的持久層框架,它封裝了JDBC操作,支持定制化SQL,高級(jí)映射,但它的數(shù)據(jù)庫(kù)無(wú)關(guān)性較低,需要的朋友可以參考下
    2023-08-08
  • SpringMVC核心技術(shù)

    SpringMVC核心技術(shù)

    這篇文章主要介紹了SpringMVC入門實(shí)例,在springmvc入門教程里算是比較不錯(cuò)的,結(jié)構(gòu)也比較完整,需要的朋友可以參考。希望可以幫助到你
    2021-07-07
  • 詳細(xì)總結(jié)各種排序算法(Java實(shí)現(xiàn))

    詳細(xì)總結(jié)各種排序算法(Java實(shí)現(xiàn))

    下面小編就為大家?guī)?lái)一篇詳細(xì)總結(jié)各種排序算法(Java實(shí)現(xiàn))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 利用Java自寫一個(gè)生成ID的工具類

    利用Java自寫一個(gè)生成ID的工具類

    平時(shí)項(xiàng)目中只要涉及表,那么一定能接觸到眾多各式各樣的ID編號(hào)。本文將通過(guò)Java語(yǔ)言實(shí)現(xiàn)手寫一個(gè)ID生成工具類,需要的小伙伴可以參考一下
    2022-11-11

最新評(píng)論