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

新生小白學(xué)Java必看之static從報(bào)錯(cuò)到精通指南

 更新時(shí)間:2026年06月02日 09:03:37   作者:MOOUAN.  
static是Java中用于修飾類成員的關(guān)鍵字,能夠賦予變量、方法、代碼塊或內(nèi)部類以類級(jí)別的共享性和獨(dú)立性,這篇文章主要介紹了新生小白學(xué)Java必看之static從報(bào)錯(cuò)到精通的相關(guān)資料,需要的朋友可以參考下

前言

很多大一剛學(xué) Java 的同學(xué),最先懵、最容易報(bào)錯(cuò)、最搞不明白的關(guān)鍵字 ——絕對是 static。

寫代碼的時(shí)候你一定遇到過:

  • main 方法里調(diào)用自己寫的方法,直接爆紅報(bào)錯(cuò)
  • 多個(gè)對象操作同一個(gè)變量,數(shù)據(jù)互不影響,搞不懂原因
  • 不知道什么時(shí)候該加 static、什么時(shí)候不能加,全靠瞎寫
  • 疑惑為什么有的代碼還沒進(jìn)入 main 就先打印輸出

其實(shí) static 一點(diǎn)都不抽象!

本文專門針對大一 Java 新手,從零通俗講解、帶完整代碼、解決所有報(bào)錯(cuò)、吃透 static 全部用法,重點(diǎn)加入執(zhí)行優(yōu)先級(jí)解析,看完直接從 “報(bào)錯(cuò)懵逼” 進(jìn)階到 “熟練使用”。

一、一句話吃透 static 核心本質(zhì)

記住這兩句話,你就懂了一半:

無 static:屬于對象,每個(gè)對象獨(dú)有一份

有 static:屬于類,所有對象共享一份

通俗比喻:普通成員就像自己專屬的生活用品,每個(gè)人都有自己的一份,互不干涉;被 static 修飾的成員就像教室公共設(shè)施,全班所有人共用同一份,一人修改,所有人看到的都會(huì)變。

static 的最大特點(diǎn):不依賴對象,跟著類走,類一加載就存在。

二、static 可以修飾什么?

Java 中 static 只有四種用法,新手全部掌握就夠用:

  1. 靜態(tài)成員變量
  2. 靜態(tài)成員方法
  3. 靜態(tài)代碼塊
  4. 靜態(tài)內(nèi)部類

三、靜態(tài)成員變量 —— 全局共享數(shù)據(jù)

核心特點(diǎn)

  • 歸屬整個(gè)類,不屬于單個(gè)對象
  • 類加載時(shí)就初始化,優(yōu)先級(jí)高于對象
  • 全局只有一份,所有對象共享同一個(gè)值
  • 推薦使用 類名。變量名 方式訪問

實(shí)戰(zhàn)案例:統(tǒng)計(jì)對象創(chuàng)建次數(shù)

輸出結(jié)果:3

可以看出:所有對象共用同一個(gè)靜態(tài)變量,數(shù)據(jù)會(huì)累加。

四、靜態(tài)成員方法 —— 不用 new 對象直接用

你天天寫的 main 方法 就是最標(biāo)準(zhǔn)的靜態(tài)方法!

核心特點(diǎn)

  • 屬于類,不用創(chuàng)建對象,可直接通過類名調(diào)用
  • 加載優(yōu)先級(jí)高于普通方法
  • 只能訪問靜態(tài)變量、靜態(tài)方法
  • 不能使用 this 關(guān)鍵字
  • 沒有多態(tài),不存在真正的方法重寫

新手最大報(bào)錯(cuò)根源(必看)

在 main(靜態(tài)方法)中,不能直接調(diào)用普通非靜態(tài)方法!

報(bào)錯(cuò):無法從靜態(tài)上下文中引用非靜態(tài)方法

原因:靜態(tài)優(yōu)先級(jí)更高、先加載,普通非靜態(tài)還沒創(chuàng)建對象,所以不能直接訪問。

正確寫法

直接把方法也加上 static,或者創(chuàng)建對象再調(diào)用。

開發(fā)規(guī)范:工具類全部用 static

工具類不需要?jiǎng)?chuàng)建對象,統(tǒng)一寫法:私有構(gòu)造 + 靜態(tài)方法

五、靜態(tài)代碼塊 —— 優(yōu)先級(jí)最高、只執(zhí)行一次

核心特點(diǎn)

  • 格式:static { }
  • 擁有最高執(zhí)行優(yōu)先級(jí),比 main 方法還要先運(yùn)行
  • 類加載時(shí)自動(dòng)執(zhí)行,全程只執(zhí)行一次,不管 new 多少對象都不會(huì)重復(fù)
  • 適合初始化靜態(tài)數(shù)據(jù)、配置信息

必背執(zhí)行優(yōu)先級(jí)順序(考試必考)

靜態(tài)代碼塊 > main 方法 > 構(gòu)造代碼塊 > 構(gòu)造方法

演示代碼

運(yùn)行輸出

這就是為什么有時(shí)候還沒進(jìn)入 main 方法,控制臺(tái)就先打印內(nèi)容,就是靜態(tài)代碼塊優(yōu)先級(jí)更高導(dǎo)致的。

六、靜態(tài)內(nèi)部類(了解即可)

新手只需記住三點(diǎn):

  • 被 static 修飾的內(nèi)部類
  • 不用先創(chuàng)建外部類對象,可直接使用
  • 只能訪問外部類中的靜態(tài)成員,遵循靜態(tài)優(yōu)先規(guī)則

七、大一新手必踩的 5 大 static 坑

  1. 局部變量不能加 static方法內(nèi)部的變量,絕對不能寫 static,直接編譯報(bào)錯(cuò)!

  2. 靜態(tài)方法不能使用 thisthis 指代當(dāng)前對象,靜態(tài)方法不屬于對象,不能用。

  3. 靜態(tài)不能直接訪問非靜態(tài)靜態(tài)資源優(yōu)先級(jí)高、先加載,非靜態(tài)屬于對象還沒創(chuàng)建,自然訪問不到。

  4. 不要隨便用 static 存可變數(shù)據(jù)全局共享,多對象同時(shí)修改會(huì)互相干擾,極易產(chǎn)生 bug。

  5. 靜態(tài)方法不存在重寫靜態(tài)方法是編譯期綁定,沒有多態(tài),子類只是 “隱藏” 父類方法,不是重寫。

八、終極總結(jié):到底什么時(shí)候加 static?

? 適合加 static

  • 工具類通用方法
  • 全局共享計(jì)數(shù)器、固定常量
  • 只需初始化一次的配置資源
  • 需要優(yōu)先加載、優(yōu)先執(zhí)行的代碼邏輯

? 不適合加 static

  • 每個(gè)對象獨(dú)有的屬性
  • 對象專屬的業(yè)務(wù)行為方法
  • 會(huì)獨(dú)立變化、互不干擾的數(shù)據(jù)

寫在最后

static 的全部真理就一句話:

屬于類就加 static,屬于對象就不加!

再記住必考優(yōu)先級(jí):靜態(tài)代碼塊 > main 方法 > 構(gòu)造代碼塊 > 構(gòu)造方法

只要你分清 對象級(jí)別類級(jí)別,懂靜態(tài)優(yōu)先執(zhí)行規(guī)則,你再也不會(huì)報(bào)錯(cuò)、再也不會(huì)亂寫 static。

本文適合大一 Java 新手收藏,以后碰到 static 報(bào)錯(cuò)、寫代碼猶豫,直接翻這篇就夠了!

到此這篇關(guān)于新生小白學(xué)Java必看之static從報(bào)錯(cuò)到精通的文章就介紹到這了,更多相關(guān)Java static報(bào)錯(cuò)到精通內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 多線程Synchronized和Lock的區(qū)別

    Java 多線程Synchronized和Lock的區(qū)別

    這篇文章主要介紹了Java 多線程Synchronized和Lock的區(qū)別,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • SpringBoot整合tkMapper的方法

    SpringBoot整合tkMapper的方法

    項(xiàng)目使用SpringBoot2.0,H2數(shù)據(jù)庫,使用了?Lombok?簡化代碼,下面是本人使用SpringBoot整合tkMapper的一個(gè)小demo,記錄下來本人在此處踩得坑
    2022-11-11
  • 詳解IDEA中SpringBoot整合Servlet三大組件的過程

    詳解IDEA中SpringBoot整合Servlet三大組件的過程

    這篇文章主要介紹了詳解IDEA中SpringBoot整合Servlet三大組件的過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • MyBatis框架中Executor執(zhí)行器的使用及說明

    MyBatis框架中Executor執(zhí)行器的使用及說明

    文章詳細(xì)介紹了MyBatis的Executor執(zhí)行器,包括其定義、作用、生命周期、四種可選執(zhí)行器類型(SIMPLE、REUSE、BATCH、CachingExecutor)以及它們在執(zhí)行鏈路中的協(xié)作關(guān)系,文章還討論了插件機(jī)制、緩存機(jī)制、事務(wù)管理以及常見誤區(qū)澄清等內(nèi)容
    2025-11-11
  • Java數(shù)據(jù)結(jié)構(gòu)之對象比較詳解

    Java數(shù)據(jù)結(jié)構(gòu)之對象比較詳解

    這篇文章主要為大家詳細(xì)介紹了Java中對象的比較、集合框架中PriorityQueue的比較方式以及PriorityQueue的模擬實(shí)現(xiàn),感興趣的可以了解一下
    2022-07-07
  • Java設(shè)計(jì)模式編程之解釋器模式的簡單講解

    Java設(shè)計(jì)模式編程之解釋器模式的簡單講解

    這篇文章主要介紹了Java設(shè)計(jì)模式編程之解釋器模式的講解,解釋器設(shè)計(jì)模式要注意其引發(fā)的性能問題,需要的朋友可以參考下
    2016-04-04
  • SpringBoot自動(dòng)配置特點(diǎn)與原理詳細(xì)分析

    SpringBoot自動(dòng)配置特點(diǎn)與原理詳細(xì)分析

    這篇文章主要介紹了SpringBoot自動(dòng)配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對SpringBoot實(shí)現(xiàn)自動(dòng)配置做一個(gè)詳細(xì)的介紹。如果可以的話,能不能畫一下實(shí)現(xiàn)自動(dòng)配置的流程圖。牽扯到哪些關(guān)鍵類,以及哪些關(guān)鍵點(diǎn)
    2022-08-08
  • java圖形化界面實(shí)現(xiàn)簡單混合運(yùn)算計(jì)算器的示例代碼

    java圖形化界面實(shí)現(xiàn)簡單混合運(yùn)算計(jì)算器的示例代碼

    這篇文章主要介紹了java圖形化界面實(shí)現(xiàn)簡單混合運(yùn)算計(jì)算器的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java list利用遍歷進(jìn)行刪除操作3種方法解析

    Java list利用遍歷進(jìn)行刪除操作3種方法解析

    這篇文章主要介紹了Java list利用遍歷進(jìn)行刪除操作3種方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Spring boot事件監(jiān)聽實(shí)現(xiàn)過程解析

    Spring boot事件監(jiān)聽實(shí)現(xiàn)過程解析

    這篇文章主要介紹了,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

辽阳县| 丰顺县| 汤原县| 衡山县| 临洮县| 江阴市| 青岛市| 九龙坡区| 昌图县| 云林县| 沿河| 阿拉善盟| 塔河县| 垦利县| 中山市| 元江| 大名县| 饶阳县| 深州市| 邯郸县| 环江| 都安| 赤壁市| 绍兴县| 铁岭市| 临澧县| 肇州县| 大同县| 竹溪县| 高邮市| 桃园市| 罗甸县| 上杭县| 隆化县| 喜德县| 仪征市| 扶绥县| 巴林右旗| 皮山县| 鲁山县| 乐东|