Java 面向?qū)ο缶幊袒A(chǔ) Static關(guān)鍵字(Day 09)

static方法是沒(méi)有this的方法.
通過(guò)類本身來(lái)調(diào)用static方法
在類中置入static方法, 就可以訪問(wèn)其他的static方法和static域——達(dá)到全局方法作用

(一)靜態(tài)變量

使用:

(1) 所有該類對(duì)象的該屬性都一樣時(shí)使用

(2) static方法是類級(jí)別的, 不管實(shí)例對(duì)象各屬性值(實(shí)例變量值)是多少 (比如置為null),都不影響static方法的調(diào)用(如讓Chinese Lisi = null; 但Lisi仍有國(guó)籍China,可訪問(wèn)到該靜態(tài)變量)

(3) 類級(jí)別的: 在類加載時(shí)就寫入方法區(qū); 只有一份而可以多次、多對(duì)象對(duì)它進(jìn)行訪問(wèn); 先于對(duì)象就存在

(二)靜態(tài)方法

靜態(tài)數(shù)據(jù)存放于代碼區(qū), 類加載時(shí)即開(kāi)辟空間/寫入, 有“共享”性質(zhì)

  1. 語(yǔ)法——static決定對(duì)變量/方法的訪問(wèn)方式:

? (1)有static: 類名.方法名(實(shí)參列表)

? (2)無(wú)static: 引用.方法名(實(shí)參列表) (即new一個(gè)對(duì)象, 通過(guò)對(duì)象訪問(wèn))

  1. 何時(shí)需要設(shè)置為靜態(tài)方法?

    (1) 這個(gè)動(dòng)作不需要對(duì)象的參與

    (2) 所有對(duì)象執(zhí)行這個(gè)動(dòng)作時(shí)產(chǎn)生的結(jié)果一樣時(shí),提升為static

  2. 使用

    (1) static無(wú)this: 靜態(tài)方法不能直接訪問(wèn)實(shí)例數(shù)據(jù)(非static的變量/方法), 需要一個(gè)對(duì)象來(lái)完成非實(shí)例數(shù)據(jù)的訪問(wèn)

    (2) 但我們大多數(shù)方法都定義為實(shí)例方法( 一般都需要對(duì)象參與/ 一般結(jié)果不同)

    (3) -> 大多數(shù)“工具類”中的方法都是靜態(tài)方法 :)

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

  1. 怎么用——語(yǔ)法格式:

    static{
        java語(yǔ)句;
    }
    
  1. 何時(shí)用——完成一些要求在類加載的時(shí)刻執(zhí)行的代碼/完成預(yù)備工作(準(zhǔn)備工具)

    e.g. 生成日志、初始化連接池、解析XML配置文件……

  2. 何時(shí)執(zhí)行——

    • 類加載時(shí)
    • 僅執(zhí)行一次
    • 一個(gè)類中可定義多個(gè)
    • 有順序(上->下)
  3. 對(duì)應(yīng)還有「實(shí)例代碼塊」(非常少用)

    {
        java語(yǔ)句;
    }
    
    • 對(duì)象初始化時(shí)機(jī),對(duì)象創(chuàng)建時(shí)---構(gòu)造函數(shù)執(zhí)行之前,可多個(gè),有順序
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容