国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式

這篇具有很好參考價(jià)值的文章主要介紹了Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


一、static 靜態(tài)關(guān)鍵字

static:代表靜態(tài)的意思,可以修飾成員變量,可以修飾成員方法。

static 修飾方法之后稱為 靜態(tài)方法(類方法),修飾成員變量之后稱為 靜態(tài)成員變量(類變量)

static 修飾后的成員變量,可以被類的所有對(duì)象共享 (訪問、修改)。


1.1 靜態(tài)成員變量與實(shí)例成員變量

靜態(tài)成員變量 實(shí)例成員變量
概述 有 static 修飾,屬于類,與類一起優(yōu)先被加載,內(nèi)存中只有一份,可以被共享訪問。 無 static 修飾,屬于對(duì)象,每個(gè)對(duì)象中都存在一份實(shí)例成員變量。
場(chǎng)景 如果信息要被共享,只需要一份就用,如:系統(tǒng)在線人數(shù)。 屬于每個(gè)對(duì)象,且每個(gè)對(duì)象的該信息不同時(shí),如:nameage,money…
訪問規(guī)則 Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式 Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式

注意: 同一個(gè)類中,訪問靜態(tài)成員可以省略類名不寫。


1.2 靜態(tài)成員方法與實(shí)例成員方法

靜態(tài)成員方法 實(shí)例成員方法
概述 有 static 修飾,屬于類,與類一起優(yōu)先被加載一次,可以被共享訪問。 無 static 修飾,屬于對(duì)象,必須用對(duì)象觸發(fā)訪問。
場(chǎng)景 如果該方法是以執(zhí)行一個(gè)通用功能為目的,或者需要方便訪問。 如表示對(duì)象自己的行為的,且方法中需要直接訪問實(shí)例成員。
訪問規(guī)則 Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式 Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式

注意: 同一個(gè)類中,訪問靜態(tài)成員方法可以省略類名不寫。


1.3 static 訪問注意事項(xiàng)

靜態(tài)方法只能訪問靜態(tài)的成員,不可以直接訪問實(shí)例成員。
實(shí)例方法可以訪問靜態(tài)的成員,也可以訪問實(shí)例成員。
另外,靜態(tài)方法中是不可以出現(xiàn) this 關(guān)鍵字的。

Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式

public class Test {
    // 靜態(tài)成員
    public static int onlineNumber = 10;
    // 實(shí)例成員
    private String name = "heima";

    /**
     * 靜態(tài)方法
     */
    public static void fun1(){
        // 靜態(tài)成員方法可以訪問 靜態(tài)成員
        System.out.println(Test.onlineNumber);
        System.out.println(onlineNumber);
        // System.out.println(name); // 報(bào)錯(cuò)
        
        // 靜態(tài)成員方法不可以直接訪問實(shí)例成員
        Test test = new Test();
        System.out.println(test.name); // 間接訪問
		// System.out.println(this); // 報(bào)錯(cuò)
    }

    /**
     * 實(shí)例方法
     */
    public void fun2(){
        // 實(shí)例方法可以訪問 實(shí)例成員
        System.out.println(this.name);
        System.out.println(name);

        // 實(shí)例方法可以訪問 靜態(tài)成員
        System.out.println(Test.onlineNumber);
        System.out.println(this.onlineNumber); // 不推薦
    }
}

1.4 內(nèi)存使用情況

  1. 訪問靜態(tài)成員變量:與類一起優(yōu)先加載。
    Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式
    Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式

  2. 訪問靜態(tài)成員方法:與類一起優(yōu)先加載。
    Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式
    Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式


二、工具類

工具類里面都是靜態(tài)方法,可以完成一個(gè)共用功能。

好處: 一次編寫,處處可調(diào),提高代碼的復(fù)用,提高開發(fā)的效率。
注意:建議把工具類的構(gòu)造器私有化,因?yàn)楣ぞ哳悷o需對(duì)外創(chuàng)建對(duì)象,它的方法都是靜態(tài)方法,直接用類名訪問即可。


三、代碼塊

類的 5 大成分:成員變量、成員方法、構(gòu)造器、代碼塊、內(nèi)部類。

靜態(tài)代碼塊 實(shí)例代碼塊
格式 static {…} {…}
特點(diǎn) 屬于類,與類一起優(yōu)先加載,自動(dòng)觸發(fā)執(zhí)行一次。 屬于對(duì)象的,每次調(diào)用構(gòu)造器構(gòu)建對(duì)象前都會(huì)執(zhí)行一次,再執(zhí)行構(gòu)造器。
作用 可以用于在程序啟動(dòng)時(shí),進(jìn)行靜態(tài)資源的初始化操作。 可以用于初始化實(shí)例資源。

四、單例模式

單例模式: 可以保證系統(tǒng)中,應(yīng)用該模式的這個(gè)類永遠(yuǎn)只有一個(gè)實(shí)例,即一個(gè)類永遠(yuǎn)只能創(chuàng)建一個(gè)對(duì)象。
例如:任務(wù)管理器對(duì)象我們只需要一個(gè)就可以解決問題了,這樣可以節(jié)省內(nèi)存空間。

4.1 餓漢單例

特點(diǎn): 拿對(duì)象時(shí),對(duì)象已經(jīng)存在。
實(shí)現(xiàn): ① 構(gòu)造器私有 ② 定義靜態(tài)成員變量存儲(chǔ)一個(gè)對(duì)象。

/**
 * 使用 餓漢單例實(shí)現(xiàn)單例類
 */
public class SingleInstance {

    /**
     * 2. 餓漢單例是在獲取對(duì)象前,對(duì)象已經(jīng)提前準(zhǔn)備好了一個(gè)
     *    這個(gè)對(duì)象只能是一個(gè),所以定義靜態(tài)成員變量記住。
     *    屬于類,只被加載一次
     */
    public static SingleInstance instance = new SingleInstance();


    /**
     * 1. 必須把構(gòu)造器私有化
     */
    private SingleInstance(){
    }
}

4.2 懶漢單例

特點(diǎn): 要拿對(duì)象的時(shí)候,才開始創(chuàng)建一個(gè)對(duì)象。
實(shí)現(xiàn): ① 構(gòu)造器私有 ② 定義靜態(tài)成員變量,暫時(shí)不存對(duì)象。

/**
 * 使用 懶漢單例實(shí)現(xiàn)單例類
 * 在真正需要該對(duì)象的時(shí)候,才去創(chuàng)建一個(gè)對(duì)象(延遲加載對(duì)象)
 */
public class SingleInstance2 {

    /**
     * 2. 定義一個(gè)靜態(tài)的成員變量負(fù)責(zé)存儲(chǔ)一個(gè)對(duì)象
     *    只加載一次,只有一份
     *    如果設(shè)置為 public 那么其他類可通過 SingleInstance2.instance 訪問,訪問結(jié)果是 null
     *    因此最好是私有化,避免挖坑
     */
    private static SingleInstance2 instance;

    /**
     * 3. 提供一個(gè)方法,對(duì)外返回單例對(duì)象
     */
    public static SingleInstance2 getInstance(){
        if(instance == null){
            instance = new SingleInstance2();
            return instance;
        }
        return instance;
    }

    /**
     * 1. 必須把構(gòu)造器私有化
     */
    private SingleInstance2(){
    }
}

文章參考:Java入門基礎(chǔ)視頻教程,java零基礎(chǔ)自學(xué)就選黑馬程序員Java入門教程(含Java項(xiàng)目和Java真題)文章來源地址http://www.zghlxwxcb.cn/news/detail-430362.html

到了這里,關(guān)于Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 我在VScode學(xué)Java類與對(duì)象(Java顯式參數(shù)和隱式參數(shù)、靜態(tài)方法+main方法、Java訪問修飾符、static關(guān)鍵字、Java的包、對(duì)象數(shù)組)第三輯

    我在VScode學(xué)Java類與對(duì)象(Java顯式參數(shù)和隱式參數(shù)、靜態(tài)方法+main方法、Java訪問修飾符、static關(guān)鍵字、Java的包、對(duì)象數(shù)組)第三輯

    我的個(gè)人博客主頁(yè):如果’\\\'真能轉(zhuǎn)義1??說1??的博客主頁(yè) 關(guān)于Java基本語(yǔ)法學(xué)習(xí)----可以參考我的這篇博客:《我在VScode學(xué)Java》 方法會(huì)操作對(duì)象并訪問他們的實(shí)例字段。 在Java中,顯式參數(shù)和隱式參數(shù)是方法調(diào)用中的兩種不同類型的參數(shù)。 注釋: 第7行: sum 方法的參數(shù)

    2024年02月16日
    瀏覽(115)
  • Java static 關(guān)鍵字

    Java 中的 static 是一個(gè)非常重要的概念,它可以用來修飾變量、方法和代碼塊。 static 用于修飾類的成員,包括變量、方法和代碼塊。使用 static 修飾的成員被稱為靜態(tài)成員,它們屬于類而不是對(duì)象,可以被類的所有實(shí)例共享。 1. 靜態(tài)變量 使用 static

    2024年02月11日
    瀏覽(27)
  • 【java】static關(guān)鍵字

    【java】static關(guān)鍵字

    類與對(duì)象的關(guān)系 類是構(gòu)建對(duì)象的模板,一個(gè)類可以構(gòu)建多個(gè)對(duì)象。 類在 方法區(qū) 當(dāng)中,對(duì)象在 堆 中。 static修飾的變量是 獨(dú)屬于類 的變量,沒有給對(duì)象。 運(yùn)行結(jié)果 ?static修飾的變量究竟儲(chǔ)存在什么地方 在 方法區(qū) 當(dāng)中有 靜態(tài)常量池 ,static修飾的變量被放在靜態(tài)常量池中,

    2024年04月15日
    瀏覽(30)
  • 【Java入門】final關(guān)鍵字、static關(guān)鍵字、內(nèi)部類的認(rèn)識(shí)

    前言 : final是Java中的一個(gè)修飾符,用于表示某個(gè)變量、方法或者類不能被修改。final可以用于修飾類、方法和變量(局部變量,成員變量)。被final所修飾的類不能被繼承,被final所修飾的方法不能被重寫,被final所修飾的變量,不能被重新賦值 。 static是Java中的一

    2024年02月11日
    瀏覽(93)
  • 詳解Java的static關(guān)鍵字

    詳解Java的static關(guān)鍵字

    不依賴于對(duì)象實(shí)例:靜態(tài)方法不需要依賴于任何對(duì)象實(shí)例,因?yàn)樗鼈兣c具體的對(duì)象實(shí)例無關(guān)聯(lián)。這意味著在沒有創(chuàng)建對(duì)象實(shí)例的情況下,就可以直接通過類名訪問或調(diào)用靜態(tài)方法。 可以訪問靜態(tài)成員:靜態(tài)方法可以訪問類的靜態(tài)成員(靜態(tài)字段和靜態(tài)方法),但不能訪問非靜

    2024年02月05日
    瀏覽(49)
  • 2023.9 - java - static 關(guān)鍵字

    ?tips:? java 的 static修飾的 方法和變量 可以被 實(shí)例訪問 ,但是typeScript?不可以。 static主要和Java的內(nèi)存管理有關(guān)。我們可以將static與變量,方法,代碼塊一起使用。static屬于該類,而不是該類的實(shí)例。 static可以修飾: 變量(也稱為類變量) 方法(

    2024年02月10日
    瀏覽(20)
  • java static關(guān)鍵字的作用

    用來修飾成員變量,將其變?yōu)轭惖某蓡T,從而實(shí)現(xiàn)所有對(duì)象對(duì)于該成員的共享; 靜態(tài)塊用法,將多個(gè)類成員放在一起初始化,使得程序更加規(guī)整,其中理解對(duì)象的初始化過程非常關(guān)鍵; 用來修飾成員方法,將其變?yōu)轭惙椒?,可以直接使用“類?方法名”的方式調(diào)用,常用于

    2024年02月08日
    瀏覽(25)
  • 【java面向?qū)ο笾衧tatic關(guān)鍵字】

    【java面向?qū)ο笾衧tatic關(guān)鍵字】

    static修飾成員變量 static修飾成員變量的應(yīng)用場(chǎng)景 static修飾成員方法 static修飾成員方法的應(yīng)用場(chǎng)景 static的注意事項(xiàng) static的應(yīng)用知識(shí):代碼塊 static的應(yīng)用知識(shí):?jiǎn)卫O(shè)計(jì)模式 static靜態(tài)的意思,可以修飾成員變量,成員方法; static修飾成員變量: 1.有static修飾的成員變量叫做

    2024年02月13日
    瀏覽(24)
  • Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉

    Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉

    權(quán)限修飾符 用于約束成員變量、構(gòu)造器、方法等的訪問范圍。 權(quán)限修飾符: 有四種作用范圍由小到大 (private - 缺省 -protected - public) 注: 不同包下的子類指的是,不同包下的子類對(duì)象能訪問,當(dāng)前類創(chuàng)建父類對(duì)象訪問不了。 定義成員變量、構(gòu)造器、方法等一般需滿足如下要

    2024年02月02日
    瀏覽(92)
  • Java SE 封裝、包、static關(guān)鍵字和代碼塊

    Java SE 封裝、包、static關(guān)鍵字和代碼塊

    1.1封裝的概念 面向?qū)ο蟪绦蛉筇匦裕悍庋b、繼承、多態(tài)。而類和對(duì)象階段,主要研究的就是封裝特性。何為封裝呢?簡(jiǎn)單來說 就是套殼屏蔽細(xì)節(jié)。 封裝:將數(shù)據(jù)和操作數(shù)據(jù)的方法進(jìn)行有機(jī)結(jié)合,隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開接口來和對(duì)象進(jìn)行交互 1.2封裝之訪問

    2024年02月05日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包