当前位置: 首页 > news >正文

《Java 100 天进阶之路》第33篇:Java中的static关键字详解

第33篇:Java中的static关键字详解

📌系列导航:《Java 100 天进阶之路》完整目录 |
⬅️ 上一篇:第32篇:Java常用工具类(Objects、Collections、Arrays深入) |
➡️ 下一篇:第34篇:Java序列化与反序列化详解


一、核心知识点

  • 静态变量(类变量):所有实例共享,类加载时初始化
  • 静态方法(类方法):只能访问静态成员,可直接类名调用
  • 静态代码块:类加载时执行一次,用于初始化静态资源
  • static 在 JVM 中的内存分配(方法区 / 元空间)
  • 静态导入(import static

二、通俗讲解(1分钟开心学)

1. static 的含义

static表示“属于类而不是实例”。被 static 修饰的成员随着类加载而存在,不需要创建对象即可访问。

2. 静态变量(类变量)

所有对象共享一份数据。常用于计数、单例模式中的 instance、配置常量等。

3. 静态方法(类方法)

工具类中常用,比如Math.sqrt()Collections.sort()。静态方法中不能直接使用this和非静态成员(因为可能还没有对象)。

4. 静态代码块

在类加载时自动执行一次,常用于加载驱动、初始化静态资源等。可以多个,按顺序执行。

5. 静态导入

import static java.lang.Math.PI;可以直接写PI而不需要Math.PI,但滥用会降低可读性。

6. 内存位置

静态变量存储在方法区(JDK8 以后叫元空间),而不是堆中。

生活类比
静态变量就像公司里的“公告栏”,所有人都能看到同一份内容,修改后所有人都看到变化。
实例变量就像每个人自己的工位,每个人有自己的物品。

三、实操代码案例 + 场景说明

场景:统计某个类被创建了多少个对象,并提供一个工具方法。

publicclassStaticDemo{// 静态变量:所有实例共享,计数privatestaticintinstanceCount=0;// 静态常量publicstaticfinaldoublePI=3.14159;// 实例变量privateStringname;publicStaticDemo(Stringname){this.name=name;instanceCount++;// 每创建一次,计数+1}// 静态方法:获取创建了多少个实例publicstaticintgetInstanceCount(){returninstanceCount;}// 静态代码块:类加载时执行一次static{System.out.println("类 StaticDemo 被加载,执行静态代码块");// 可以在这里加载配置、驱动等}// 实例方法publicvoidshow(){System.out.println("实例:"+name);}publicstaticvoidmain(String[]args){newStaticDemo("A");newStaticDemo("B");System.out.println("总共创建了 "+StaticDemo.getInstanceCount()+" 个对象");System.out.println("圆周率:"+StaticDemo.PI);}}// 静态导入示例importstaticjava.lang.System.out;importstaticjava.lang.Math.*;publicclassStaticImportDemo{publicstaticvoidmain(String[]args){out.println("Hello");// 直接写 out,省略 System.doubleresult=sqrt(pow(3,2)+pow(4,2));// 不用 Math.out.println("斜边长:"+result);}}

四、避坑要点

错误/误区后果正确做法
静态方法中尝试使用this编译错误静态方法中不能使用this
静态变量多线程环境下不加同步计数不准、线程安全问题使用synchronizedAtomicInteger
误以为静态代码块可以抛出非运行时异常而不处理编译错误用 try-catch 包裹
静态方法被子类重写(其实不能,只能隐藏)调用时还是父类的实现理解:静态方法没有多态,调用看引用类型

五、面试高频考点

Q1:static 变量和方法的内存分配在哪?

在方法区(JDK8 前永久代,JDK8+ 元空间),随类加载而分配,类卸载而释放。

Q2:静态代码块和实例代码块的区别?

静态代码块在类加载时执行一次;实例代码块在每次创建对象时执行,且优先于构造方法。

Q3:能否在静态方法中访问非静态变量?为什么?

不能,因为非静态变量属于具体对象,静态方法调用时可能还没有任何对象存在。

六、练习题

  1. 设计:编写一个Logger类,包含一个静态方法log(String msg),每次调用时打印时间戳和消息,并统计调用次数。
  2. 代码分析:写出以下代码的输出。
    classTest{static{System.out.print("A ");}{System.out.print("B ");}Test(){System.out.print("C ");}}publicclassMain{publicstaticvoidmain(String[]args){newTest();newTest();}}
  3. 动手:使用静态导入简化System.out.printlnMath.sqrt的调用,写一个小程序。

📊 你的学习进度

  • 当前:第33篇 / 共44篇 ·第五阶段:工具类、异常最佳实践、序列化(第32~35篇)
  • ✅ 已完成:第1~32篇
  • 📖 正在学:第33篇
  • ⏳ 待学习:第34~44篇

👉 📚 完整目录 & 学习指南 | 🔥 订阅本专栏,不错过每一篇

💡 本专栏每篇都包含:避坑表 + 面试高频考点 + 练习题。每天30分钟,100天拿offer!


👉 下一篇文章预告

《第34篇:Java序列化与反序列化详解》

内容简介:Serializable接口、transient关键字、serialVersionUID的作用、反序列化安全风险。

💡 学完这篇,你将掌握对象的持久化存储,面试再问serialVersionUID轻松回答。

📌《Java 100 天进阶之路 | 从入门到上岗就业》每天一篇,建议收藏 + 关注,一起100天拿offer!
👉 点击关注我,更新后第一时间收到推送!
📌 除了Java,我也在深挖智能物流实战(出版社WMS、托盘调度、机器学习落地)。如果你对技术在不同领域的实战感兴趣,欢迎点击我的头像,看看专栏《出版社物流WMS智能调度实战》。技术相通,思路可鉴。

http://www.rkmt.cn/news/1426396.html

相关文章:

  • 2026 钢丝网片厂家哪家好 钢筋网片源头生产厂家 电焊网片现货厂家采购指南 - 栗子测评
  • 07-认知篇-对比-xLua深度解析
  • 2026 各类防护网厂商整理对比围栏钢丝网直销厂家与体育场围网选购方向 - 栗子测评
  • 给项目配纯音乐后,我把 AI 写歌/AI 做伴奏流程拆了一遍
  • AI法律文档软件实战指南:从工具选型到工作流重塑
  • 2026 专业做钢格栅的厂家产品测评汇总盘点河北各地钢格栅板源头生产厂家综合品质 - 栗子测评
  • Amphenol ICC RJE1Y33A83C42401线束组件应用分析及国产替代思路
  • 2026 大型玻璃钢立式储罐容器生产厂家与玻璃钢水箱定制厂家综合榜单 - 栗子测评
  • 告别卡顿与色偏:PotPlayer搭配MadVR渲染器,针对NVIDIA/AMD/Intel显卡的详细画质调校手册
  • 娱乐沙滩泳池价格,诺亚泳池贵不贵? - myqiye
  • 告别物理限制:手把手教你用USB Network Gate在VMware和Hyper-V虚拟机里直连USB加密狗
  • 2026年月九华山徽菜馆口碑甄选:好吃徽菜馆、必吃美食、农家土菜、实惠餐饮、必打卡土菜馆选择指南 - 海棠依旧大
  • 内存计算架构原理、实现与应用解析
  • 2026年苏州轻质节能建材口碑推荐榜:发泡混凝土、石膏基自流平、发泡水泥厂家选择指南,产能、工艺、品控三维度权威解析 - 海棠依旧大
  • 快手图片去水印软件怎么用?不同场景的处理方法与工具选择方案 - 科技热点发布
  • 2026 公路护栏网生产厂家综合测评梳理公路隔离栅实体工厂与高速隔离栅选购方向 - 栗子测评
  • 2026年瑞丽翡翠厂家口碑推荐榜:翡翠定制、缅甸翡翠、翡翠手镯、天然翡翠、翡翠鉴定厂家选择指南,货源、工艺、品控三维度权威解析 - 海棠依旧大
  • 主流开发语言和开发环境介绍
  • 别再死记硬背了!用Kettle调用存储过程的保姆级图文教程(含参数配置)
  • 2026年年度GEO推广好用吗 - mypinpai
  • 2026绍兴液压升降平台液压货梯维修公司+杭州液压升降货梯液压升降平台厂家推荐:杭州液压货梯维修公司汇总 - 栗子测评
  • 2026年论文降AI保姆级指南:实测降AI权威指令+三款工具深度横评,手把手教你安全通关 - 降AI实验室
  • GEO服务商品牌推荐,聚合AI GEO靠谱吗? - mypinpai
  • UE5 GAS插件实战:从零配置到实现第一个攻击技能(附GitHub工程)
  • 3步掌握电话号码定位神器:一键查询手机号码真实归属地
  • 2026 主流围栏网护栏网厂家综合盘点对比围栏钢丝网直销厂家与产品实力 - 栗子测评
  • 英雄联盟玩家的终极智能助手:Seraphine一键查询战绩与BP辅助完全指南
  • 保姆级教程:用Docker Buildx为树莓派和Mac M1同时构建镜像并推送到私有仓库
  • 2026 河北钢格板厂家产品综合测评结合实测数据解答河北钢格板哪家好 - 栗子测评
  • 用Unity UGUI ScrollRect做个游戏公告板:支持鼠标悬停暂停的自动循环滚动条