news 2026/4/24 17:58:45

Java static

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 最典型的应用场景。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 16:24:08

【Django毕设全套源码+文档】基于Django的“农场主”特色农产品直卖网站设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/24 2:15:36

DeepSeek-R1-Distill-Qwen-14B:14B推理模型性能大突破

DeepSeek-R1-Distill-Qwen-14B:14B推理模型性能大突破 【免费下载链接】DeepSeek-R1-Distill-Qwen-14B 探索推理新境界,DeepSeek-R1-Distill-Qwen-14B模型以创新强化学习技术,实现思维自主演进,性能逼近顶尖水平,为研究…

作者头像 李华
网站建设 2026/4/18 6:50:00

如何使用JavaScript操作DOM节点的属性?

一、核心概念:DOM 属性的两类形式 在操作前先分清两个易混概念,避免踩坑: HTML 原生属性:标签上写的属性(如id"box"、src"img.jpg"、class"content");DOM 对象…

作者头像 李华
网站建设 2026/4/22 1:57:21

3大创新突破!医疗影像分割的AI变革

3大创新突破!医疗影像分割的AI变革 【免费下载链接】Medical-Transformer Official Pytorch Code for "Medical Transformer: Gated Axial-Attention for Medical Image Segmentation" - MICCAI 2021 项目地址: https://gitcode.com/gh_mirrors/me/Medi…

作者头像 李华
网站建设 2026/4/22 22:57:06

2026 网安转行建议!零基础到精通全拿捏

在当前就业形势下,不少朋友咨询过龙哥,询问转行能否转行网络安全。网络安全作为一个热门领域,自然也吸引了许多人的目光。本文将就转行网络安全这一话题,提供一些切实可行的建议。 网络安全行业概况 网络安全涵盖了从基础的脚本编…

作者头像 李华
网站建设 2026/4/17 5:39:26

构建安全隔离的数据处理环境:MinerU离线部署技术白皮书

构建安全隔离的数据处理环境:MinerU离线部署技术白皮书 【免费下载链接】MinerU A high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华