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

Java static

一、static是什么?

static(静态)是 Java 中的一个关键字,用来修饰变量、方法、代码块、内部类,核心作用是:被 static 修饰的成员属于「类」本身,而不是类的某个实例(对象)

可以用一个通俗的比喻理解:

  • 普通成员(非 static):好比每个学生的「个人笔记本」,每个学生(对象)都有自己的一本,互不干扰;
  • static 成员:好比教室的「公共白板」,所有学生(对象)共用这一个,改了之后所有人看到的都是修改后的结果。

二、static的核心用法(附代码示例)

1. 静态变量(类变量)
  • 定义:属于类,所有对象共享,内存中只加载一次(类加载时初始化);
  • 访问:可以直接通过「类名。变量名」访问,也可以通过对象访问(不推荐)。

java

运行

public class Student { // 非静态变量(实例变量):每个学生独有 String name; // 静态变量(类变量):所有学生共享的学校名称 static String school = "北京大学"; public static void main(String[] args) { // 1. 直接通过类名访问静态变量(推荐) System.out.println(Student.school); // 输出:北京大学 // 2. 创建对象访问(不推荐,易混淆) Student s1 = new Student(); s1.name = "张三"; System.out.println(s1.school); // 输出:北京大学 // 3. 修改静态变量,所有对象都受影响 Student.school = "清华大学"; Student s2 = new Student(); s2.name = "李四"; System.out.println(s1.school); // 输出:清华大学 System.out.println(s2.school); // 输出:清华大学 } }
2. 静态方法(类方法)
  • 定义:属于类,无需创建对象即可调用;
  • 注意:静态方法中不能直接访问非静态成员(因为非静态成员属于对象,静态方法执行时可能还没有对象),但可以访问静态成员。

java

运行

public class MathUtil { // 静态方法:计算两数之和(工具类常用静态方法) public static int add(int a, int b) { // 静态方法中可以访问静态变量 staticVar = 10; return a + b; } // 静态变量 static int staticVar; // 非静态变量 int nonStaticVar; public static void main(String[] args) { // 直接通过类名调用静态方法 int sum = MathUtil.add(3, 5); System.out.println(sum); // 输出:8 // 错误示例:静态方法中不能直接访问非静态变量 // System.out.println(nonStaticVar); } }
3. 静态代码块
  • 定义:类加载时执行,且只执行一次,常用于初始化静态变量、加载配置文件等;
  • 执行顺序:静态代码块 > 构造方法(创建对象时执行)。

java

运行

public class TestStaticBlock { // 静态变量 static int num; // 静态代码块 static { num = 100; System.out.println("静态代码块执行,num=" + num); } // 构造方法 public TestStaticBlock() { System.out.println("构造方法执行"); } public static void main(String[] args) { // 创建第一个对象:静态代码块先执行,再执行构造方法 TestStaticBlock t1 = new TestStaticBlock(); // 创建第二个对象:静态代码块不再执行,只执行构造方法 TestStaticBlock t2 = new TestStaticBlock(); } }

输出结果

plaintext

静态代码块执行,num=100 构造方法执行 构造方法执行

三、常见使用场景

  1. 工具类:如java.lang.MathMath.random()Math.max()等都是静态方法),无需创建对象,直接调用;
  2. 共享数据:如统计某个类的对象创建个数(用静态变量计数);
  3. 初始化资源:如加载数据库连接配置、读取配置文件(静态代码块)。

总结

  1. static修饰的成员属于,而非对象,内存中仅一份,类加载时初始化;
  2. 静态方法不能直接访问非静态成员,非静态方法可以访问所有成员;
  3. 静态代码块只执行一次,常用于静态资源初始化,工具类是 static 最典型的应用场景。
http://www.jsqmd.com/news/308483/

相关文章:

  • 静态代码块和非静态代码块有什么区别?
  • 【Django毕设源码分享】基于Django的大学生心理健康管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【开题答辩全过程】以 基于Java的图书馆座位预约管理系统设计为例,包含答辩的问题和答案
  • 2026年1月智能AI客服服务商推荐排行榜单:五大服务商深度对比与评测
  • 探索AI视频生成:高效工作流搭建与实战指南
  • Skills3技能库:全方位提升开发效能的集成解决方案
  • 如何用AI游戏算法实现2048智能决策?探索游戏AI的核心技术与应用
  • 【开题答辩全过程】以 基于Java的网络问题投诉处理系统为例,包含答辩的问题和答案
  • 导师推荐9个AI论文写作软件,本科生轻松搞定毕业论文!
  • Django测试客户端(Client)详解:模拟浏览器请求
  • 【独立站神器】1688 详情页“长图”太长怎么翻?揭秘 AI 如何一键搞定 10000px 超长海报,无需切图!
  • 龙牙战术服装联系方式:消费者联系途径与选购注意事项
  • 【家居卖家痛点】沙发尺寸图全是中文?揭秘 AI 如何一键“cm 转 inch”并修复背景,退货率直降 30%!
  • 压滤机整机专业制造商哪家好,快来一探究竟
  • 2026年全国假发品牌哪家好? 聚焦高端定制与优质个性化场景化需求
  • 2026年薄膜压力传感器加工厂推荐,口碑好的品牌有哪些
  • 2026年口碑卓越的靠谱装修公司TOP10,昆明这些企业上榜
  • DriverManager、DataSource、数据库驱动以及数据库连接池的关系 - 指南
  • 2026年行业内好用的自动化立体仓库实力厂家推荐排行榜,立体仓储/立体仓库/自动化仓库,自动化立体仓库定做厂家推荐
  • 2026广东最新沉香手串/棋楠沉香厂家推荐广州千臻香业有限公司:源头直供,全链保障,这家广州企业实力出圈
  • 2026年比较好的美容美发培训学校,为你揭秘行业Top10
  • 总结系统门窗加盟,科典门窗在山西的性价比和口碑排名如何?
  • 字画回收乱象频发 藏家如何避坑?北京这家机构给出专业指引
  • 龙牙战术服装联系方式:产品选购与官方渠道使用指南
  • 2026年日照婚礼酒店推荐,停车方便的靠谱品牌有哪些
  • 龙牙战术服装联系方式:获取品牌支持与注意事项提示
  • 深圳市键键通科技有限公司联系方式:如何有效获取官方服务指引
  • 告别数据库变更混乱:用 Bytebase 打造 GitLab 式数据库 DevOps 平台
  • 深圳市键键通科技有限公司联系方式:官方信息核实与使用建议
  • 微信聊天记录备份与个人数据管理全攻略:3种高级导出策略与安全实践