新闻详情

新闻详情

首页 / 资讯中心 / 详情

static 静态关键字

发布时间:2026/10/1 16:17:49来源:尧图网络
static 静态关键字
一、static 概述static是静态修饰符可以修饰属性、方法、代码块。 被 static 修饰的内容属于类不属于对象随着类的加载而创建优先于对象存在。二、静态属性静态成员变量概念用static修饰的成员变量叫做静态属性 / 静态变量。实例变量普通成员变量每个对象拥有独立一份对象之间互不干扰。静态变量全类共享所有对象共用同一份内存一份数据对象修改全部受影响。访问语法推荐类名.静态变量名不需要创建对象直接用类访问也可以对象名.静态变量名语法允许但不推荐代码示例class Student{ //实例变量每个对象各自一份 String name; //静态属性所有Student对象共享 static String school; } public class StaticAttrDemo { public static void main(String[] args) { //通过类名直接访问静态属性不用new对象 Student.school 理工大学; Student s1 new Student(); s1.name 小明; Student s2 new Student(); s2.name 小红; //两个对象读取到同一个静态变量 System.out.println(s1.name 学校 Student.school); System.out.println(s2.name 学校 Student.school); //修改静态变量全部对象都会看到变化 Student.school 山东大学; System.out.println(s1.name 学校 Student.school); System.out.println(s2.name 学校 Student.school); } }重点阐释静态变量存放在方法区只在类加载时分配一次内存实例变量在堆中每 new 一个对象就开辟一份内存。适合存放所有对象都相同的数据比如学校名称、公司名节省内存。三、静态方法概念被static修饰的方法称为静态方法。访问语法推荐类名.静态方法名(实参)直接类调用无需对象。也可以对象.静态方法名()语法允许不推荐。⚠️ 核心访问规则考试高频考点静态方法中不能使用 this 关键字静态属于类this 代表对象。静态方法只能直接访问静态属性、静态方法不能直接访问普通实例属性、普通成员方法。普通成员方法可以直接访问静态属性、静态方法也可以访问实例属性。口诀静态只能找静态实例随便找全部代码示例public class StaticMethodDemo { //静态变量 static int staticNum 100; //实例变量 int instanceNum 200; //静态方法 public static void staticFun(){ System.out.println(这是静态方法); //静态方法可以访问静态变量 System.out.println(staticNum); //错误静态方法不能直接访问实例变量 //System.out.println(instanceNum); //错误静态方法不能写this //System.out.println(this.instanceNum); } //普通实例方法 public void instanceFun(){ System.out.println(普通成员方法); //普通方法既可以访问实例也可以访问静态 System.out.println(instanceNum); System.out.println(staticNum); } public static void main(String[] args) { //main本身就是静态方法 StaticMethodDemo.staticFun(); //类名调用静态方法 StaticMethodDemo obj new StaticMethodDemo(); obj.instanceFun(); } }为什么会有这条规则 类加载的时候静态方法就存在了此时对象还没有被 new 出来实例变量还没有内存自然无法访问。四、静态代码块概念static { }写在类里面方法外面被 static 修饰的代码块。执行时机类被加载的时候只执行唯一一次优先于所有对象的创建只跑一遍。对比回顾 构造代码块每 new 一次对象执行一次在构造方法之前。 静态代码块类加载执行全程只执行 1 次和 new 多少对象无关。作用用于类初始化做一次性资源加载加载配置文件、初始化静态变量。代码示例public class StaticBlockDemo { static { System.out.println(静态代码块执行); } { System.out.println(构造代码块执行); } public StaticBlockDemo(){ System.out.println(构造方法执行); } public static void main(String[] args) { System.out.println(main方法开始); //连续new两个对象 new StaticBlockDemo(); new StaticBlockDemo(); } }输出顺序静态代码块执行 main方法开始 构造代码块执行 构造方法执行 构造代码块执行 构造方法执行重点解读 静态代码块只执行 1 次哪怕创建多个对象构造代码块每 new 对象执行一次。执行总顺序静态代码块 构造代码块 构造方法多个静态代码块一个类可以写多个 static {}按照源码从上到下顺序依次执行。五、static 全套对比汇总表类型修饰所属执行时机访问特点实例属性无 static对象new 对象时分配内存只能通过对象访问静态属性static类类加载时分配内存类名。变量全对象共享实例方法无 static对象对象调用时执行可访问静态 实例可以用 this静态方法static类类 / 对象调用执行只能访问静态不能用 this构造代码块无 static对象每 new 对象执行一次构造方法前运行可访问实例、静态、this静态代码块static类类加载只执行 1 次只能访问静态不能用 this高频易错点小结static 属于类早于对象对象还没产生静态内容已经存在。静态不能直接访问实例实例可以访问静态。静态代码块只会运行一次构造代码块 new 几次运行几次。static 方法严禁使用this。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

从0到1做Vibe Coding:不要学AI,直接用TaoToken打通工具链 2026/10/1 20:14:41

从0到1做Vibe Coding:不要学AI,直接用TaoToken打通工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
狂揽 10.3k Star!用 Claude Code 写论文的 Skill 流水线,settings.json 配置全公开 2026/10/1 20:14:41

狂揽 10.3k Star!用 Claude Code 写论文的 Skill 流水线,settings.json 配置全公开

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
亲属关系公证认证怎么办理?从材料到出证手把手教学,少走弯路 2026/10/1 20:14:41

亲属关系公证认证怎么办理?从材料到出证手把手教学,少走弯路

摘要:很多人办理移民、境外探亲等业务时,需要亲属关系公证认证,但不清楚办理渠道、材料清单与避坑要点。其实现在可以通过“证天下”、“慧办好”、“叮咚办”、“指上通”等小程序线上申办了,不用跑公证处窗口。下面从概念、材料…

阅读更多 →
SpringBoot+Vue前后端分离基础项目搭建:统一返回、JWT鉴权与部署实战 2026/10/1 20:14:40

SpringBoot+Vue前后端分离基础项目搭建:统一返回、JWT鉴权与部署实战

作为一个常年和各种“半成品项目”“毕设代码”打交道的Java开发,我越来越觉得:SpringBootVue前后端分离这套组合,早就不只是“会写接口”和“会写页面”那么简单了。你真正需要的是一个跑得通、结构清楚、能在此基础上自由加功能的基础骨架。…

阅读更多 →
wifit3 自带 PyInstaller 打包:从零构建独立二进制文件的完整流程 2026/10/1 20:14:40

wifit3 自带 PyInstaller 打包:从零构建独立二进制文件的完整流程

wifit3 自带 PyInstaller 打包:从零构建独立二进制文件的完整流程 【免费下载链接】wifit3 Wifite but USB-only & cross-platform. 项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3 wifit3 自带 PyInstaller 打包方案,让你无需手动…

阅读更多 →
PLC系统演进史:从继电器到SoC的控制逻辑变革 2026/10/1 20:14:34

PLC系统演进史:从继电器到SoC的控制逻辑变革

1. 这不是教科书里的“发展史”,而是一群工程师用继电器、纸带和熬夜换来的控制革命PLC系统发展历史——这七个字背后,不是时间轴上冷冰冰的年份罗列,而是整整一代自动化工程师在配电柜前蹲着接线、在车间里扛着示波器测信号、在凌晨三点对着…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉