news 2026/4/16 14:05:06

Java static入门:概述+静态变量特点与基础实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java static入门:概述+静态变量特点与基础实战

🏠个人主页:黎雁
🎬作者简介:C/C++/JAVA后端开发学习者
❄️个人专栏:C语言、数据结构(C语言)、EasyX、JAVA、游戏、规划、程序人生
✨ 从来绝巘须孤往,万里同尘即玉京

文章目录

  • Java static入门:概述+静态变量特点与基础实战
    • 📝 文章摘要
    • 一、static关键字是什么?🤔
      • 💡 小拓展:Java vs C语言的static(核心差异)
    • 二、静态变量:static修饰成员变量 📦
      • 2.1 静态变量的3大核心特点
      • 2.2 静态变量的2种调用方式
      • 2.3 实战案例:Student类中的静态变量
        • 代码实现
        • 运行结果分析
      • 2.4 静态变量vs非静态变量 核心对比
    • ✍️ 写在最后

Java static入门:概述+静态变量特点与基础实战

知识回顾
在进入Java面向对象的静态特性学习前,我们已经掌握了JavaBean类的设计、对象的创建与使用、成员变量和成员方法的基础用法。而static关键字是面向对象中实现数据共享、功能复用的核心,也是从“面向对象”向“类级别的操作”过渡的关键,学好它能让我们的代码更简洁、更高效,这篇就从基础的static概述和静态变量开始,吃透静态特性的底层逻辑~

📝 文章摘要

  • 核心摘要:本文从static关键字的基本定义出发,对比C语言与Java中static的差异,重点讲解静态变量的3大核心特点、2种调用方式,并结合Student类实战案例拆解静态变量的使用逻辑,帮你夯实静态特性的入门基础。
  • 阅读时长:8分钟
  • 适合人群&阅读重点
    🎯 Java初学者:重点理解静态变量的“类共享、属于类、优先对象存在”三大特点,掌握基础调用方式。
    📚 高校计算机专业学生:对比Java与C语言的static差异,理清语法底层的设计逻辑。
    💻 初级开发工程师:掌握静态变量在实际开发中的使用场景,规避基础使用误区。
    📖 面试备考者:熟记静态变量的核心特点,为后续内存原理和面试题打基础。

一、static关键字是什么?🤔

static翻译为静态,是Java中非常常用的修饰符,它可以修饰类的成员变量成员方法,后续还会学到它修饰代码块(静态代码块),其核心作用是将修饰的内容提升到「类级别」,脱离对象独立存在。

简单来说:被static修饰的内容,不再属于某个具体的对象,而是属于整个类,所有该类的对象都会共享这份内容。

💡 小拓展:Java vs C语言的static(核心差异)

很多学过C语言的同学会混淆static的用法,这里直接做对比,理清两者的核心区别,避免记混~
C语言中的static主要修饰局部变量、全局变量、函数,核心影响作用域生命周期,无“类级别”概念:

C语言static修饰目标作用域变化生命周期变化
局部变量不变(当前方法)变长(与程序一致)
全局变量变小(从所有文件→当前文件)不变(与程序一致)
函数变小(从所有文件→当前文件)不变(与程序一致)

而Java中的static面向类的修饰符,仅修饰类的成员(变量/方法/代码块),核心是将成员从「对象级别」提升到「类级别」,与C语言的设计初衷和使用场景完全不同,切勿混为一谈

二、静态变量:static修饰成员变量 📦

static修饰类的成员变量时,这个变量就被称为静态变量(也叫类变量),与之对应的,没有被static修饰的成员变量称为非静态变量(也叫实例变量)。

2.1 静态变量的3大核心特点

这是静态变量的核心考点,必须熟记!✅

  1. 被该类所有对象共享:这是静态变量最核心的特点,一个类的所有对象共用同一个静态变量,修改其中一个对象的静态变量值,其他对象的该值也会同步改变。
  2. 不属于对象,属于类:静态变量是类的属性,不是某个对象的属性,即使没有创建任何对象,静态变量依然存在。
  3. 随着类的加载而加载,优先于对象存在:Java程序运行时,类会先被加载到方法区,静态变量会跟着类一起初始化;而对象是后续通过new关键字创建的,因此静态变量的创建时机早于对象。

2.2 静态变量的2种调用方式

静态变量有两种调用方式,推荐使用类名调用,更能体现其“类级别”的特性。

  1. 类名调用(推荐):类名.静态变量名
  2. 对象名调用(不推荐):对象名.静态变量名(Java语法允许,但会掩盖静态变量的本质,可读性差)

2.3 实战案例:Student类中的静态变量

结合实际场景理解:一个班级的所有学生共享同一个班主任,因此班主任姓名teacherName适合定义为静态变量,而学生的姓名name、年龄age是每个学生的独有属性,定义为非静态变量。

代码实现
// 学生类(JavaBean)publicclassStudent{// 非静态变量:每个学生独有Stringname;intage;// 静态变量:所有学生共享(班主任)staticStringteacherName;// 展示学生信息publicvoidshow(){System.out.println(name+"..."+age+"..."+teacherName);}}// 测试类publicclassTestStatic{publicstaticvoidmain(String[]args){// 方式1:类名调用静态变量(推荐)Student.teacherName="阿玮老师";// 创建第一个学生对象Students1=newStudent();s1.name="张三";s1.age=23;s1.show();// 输出:张三...23...阿玮老师// 创建第二个学生对象Students2=newStudent();s2.name="李四";s2.age=24;s2.show();// 输出:李四...24...阿玮老师// 方式2:对象名调用静态变量(不推荐)// s2.teacherName = "老王老师";// s1.show(); // 输出:张三...23...老王老师(所有对象共享,同步改变)}}
运行结果分析
  • 我们仅通过Student.teacherName给静态变量赋值一次,两个学生对象的teacherName都获取到了该值,体现了所有对象共享的特点。
  • 赋值静态变量时,我们还没有创建任何学生对象,体现了静态变量优先于对象存在的特点。
  • 如果通过任意一个对象修改静态变量(如s2.teacherName = "老王老师"),所有对象的该值都会同步改变,进一步验证了“共享性”。

2.4 静态变量vs非静态变量 核心对比

用表格清晰区分,避免使用时混淆:

对比维度静态变量(类变量)非静态变量(实例变量)
所属级别属于类属于对象
加载时机随类加载而加载,优先存在随对象创建而加载
共享性所有对象共享每个对象独有
调用方式类名调用(推荐)/对象名调用仅能对象名调用
内存存储方法区的类静态区域堆内存的对象区域

✍️ 写在最后

  1. 本文核心掌握static关键字的基本定义,以及静态变量的3大特点+2种调用方式,这是静态特性的入门基础,后续的静态方法、静态代码块都是基于这个核心延伸的。
  2. 记住Java与C语言的static无直接关联,不要用C语言的逻辑理解Java的静态特性,避免走入误区。
  3. 实际开发中,当一个属性需要被所有对象共享时,就定义为静态变量,比如班级的班主任、系统的全局配置、工具类的常量等。
  4. 静态变量的调用优先使用类名调用,这是开发规范,能让代码的可读性更高,一眼看出这是类级别变量。

下一篇我们会深入底层,通过内存图解析静态变量的存储位置和访问逻辑,同时排查静态变量的常见使用错误,帮你从“会用”升级为“理解底层”~


❤️ 我是黎雁,专注Java基础与实战分享,关注我,一起从0到1吃透Java面向对象!
📚 后续文章预告:《Java静态变量底层:内存图解析+避坑指南》
💬 评论区交流:你在使用静态变量时遇到过哪些问题?或者有哪些疑惑,欢迎留言讨论~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 9:46:05

高效网页媒体提取解决方案:3分钟掌握猫抓无水印资源本地化工具

高效网页媒体提取解决方案:3分钟掌握猫抓无水印资源本地化工具 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾遇到想保存网页视频却找不到下载按钮的窘境?是否因在线…

作者头像 李华
网站建设 2026/4/11 18:11:43

NewBie-image-Exp0.1功能实测:高质量动漫生成效果展示

NewBie-image-Exp0.1功能实测:高质量动漫生成效果展示 你有没有试过输入一段文字,几秒钟后就得到一张堪比专业画师手绘的动漫图?不是那种边缘模糊、结构错乱的“AI味”作品,而是发丝清晰可数、光影自然过渡、角色神态生动、构图富…

作者头像 李华
网站建设 2026/4/4 23:37:51

智能配置工具:硬件适配与系统搭建的无缝解决方案

智能配置工具:硬件适配与系统搭建的无缝解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 对于零基础用户而言,黑苹果系…

作者头像 李华
网站建设 2026/4/16 10:21:01

通义千问3-14B工具推荐:LMStudio+Ollama双平台部署测评

通义千问3-14B工具推荐:LMStudioOllama双平台部署测评 1. 为什么Qwen3-14B值得你花10分钟部署一次 你有没有遇到过这样的困境:想用一个真正好用的大模型做日常办公、技术写作或长文档分析,但发现30B以上的模型动辄需要2张A100,而…

作者头像 李华
网站建设 2026/4/16 3:43:16

革命性突破:Transformer模型量化压缩与TensorRT加速部署全指南

革命性突破:Transformer模型量化压缩与TensorRT加速部署全指南 【免费下载链接】flash-attention 项目地址: https://gitcode.com/gh_mirrors/fla/flash-attention 在深度学习模型落地过程中,你是否曾因模型体积过大导致部署困难?是否…

作者头像 李华
网站建设 2026/4/16 10:22:17

如何破解苹果二进制黑箱?这款工具让逆向分析效率提升300%

如何破解苹果二进制黑箱?这款工具让逆向分析效率提升300% 【免费下载链接】MachOView MachOView fork 项目地址: https://gitcode.com/gh_mirrors/ma/MachOView 核心价值:为什么MachOView是逆向工程师的必备工具 当你拿到一个iOS应用的IPA文件&a…

作者头像 李华