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

Java静态方法与静态变量的定义与使用

静态变量属于类别,类加载初始化,所有示例共享;静态方法只能访问静态成员,不能重写;静态内部类不使用外部类引用,适合解耦;静态代码块按书写顺序执行一次。

必须使用静态变量static修饰属于类而不是实例

静态变量在类加载时分配内存,所有实例共享相同的数据。它不依赖于对象的创建,即使没有 new 也可以通过任何例子类名.变量名直接访问。

常见的错误是将其误用作成员变量:例如,在结构方法中static变量赋初值,结果每次都是 new 覆盖前一次——这通常不是初衷,而是逻辑漏洞。

  • 静态变量的初始化优先于包括静态代码块在内的任何实例。(static {})也只执行一次
  • 在多线程环境下直接读写volatile或非同步静态变量可能导致可见性问题
  • 静态变量在序列化时不会保存,反序列化后仍然是类加载时的值(或默认值)

静态方法只能访问静态成员,不能使用thissuper

静态方法可以在类加载时调用,此时没有对象,因此禁止在语言层面访问实例变量和调用实例方法,也不允许使用thissuper关键字。

典型报错是:non-static variable xxx cannot be referenced from a static context。这不是编译器“太死板”,而是语义上的根本矛盾——你想在一个没有对象的上下文中访问特定对象的状态。

  • 如果需要在静态方法中操作实例数据,则必须引用显式引入对象(如doSomething(MyClass obj)
  • 工具类(如StringUtilsObjects)静态方法被广泛使用,因为它不依赖状态,自然没有副作用
  • 静态方法不能被子类重写(override),但是可以隐藏(hiding):子类定义与签名静态方法相同,调用取决于引用类型,而不是实际类型

静态内部类不持有外部类引用,适用于解耦和性能敏感场景

普通内部类隐式持有外部类实例引用,而静态内部类没有引用,因此不能依靠外部类实例独立创建,也不能阻止外部类对象被引用 GC 回收。

网上购物系统HTML静态版本

网络趣味购物系统静态版支持网站一键静态生成,采用动态进度条模式生成静态,生成过程更加清晰。淘宝数据包的导入功能增加到商品管理中,与淘宝数据同步更新!采用领先的AJAX+XML集成技术,速度更快、更高效!系统进行了大量的实用更新,如优化核心算法、增加商品图片批量上传、谷歌地图浏览插入等。独特的静态生成算法技术可以随意控制静态生成过程,从而大大减轻服务器的负担,结合各种强大的SEO优化方法,使

这是一个容易被忽视的关键区别:例如 Android 非静态内部类被误用作非静态内部类 Handler,会导致 Activity 泄漏;用静态内部类代替; +WeakReference要安全得多。

  • 静态内部类可以直接访问外部类的静态成员,但不能访问实例成员(除非输入对象)
  • 它可以声明其静态变量和静态方法,普通内部类别不允许静态成员(除常量外)static final
  • 枚举的本质是静态内部语法糖,每个例子都是这样的public static final字段

静态代码块用于类初始化,执行顺序严格遵循书写位置

静态代码块(static {})第一次主动使用在类(如第一次) new、当第一次调用静态方法和第一次访问静态字段时,它只执行一次。它的执行时间比任何结构方法和实例代码块都早({})。

多个静态代码块按源代码中出现的顺序执行,并与静态变量初始化混合。例如:

public class Demo { static int a = 1; static { System.out.println("block 1: " + a); // 输出 1 a = 2; } static int b = a; // 此时 a 已是 2 static { System.out.println("block 2: " + b); // 输出 2 } }

一旦这种顺序依赖变得复杂,就很容易出错。特别是当静态变量初始化依赖于未执行的静态代码块时,它将获得默认值(例如0null),而不是预期的结果。

http://www.jsqmd.com/news/519725/

相关文章:

  • 微铣削刀具磨损损伤检测数据集VOC+YOLO格式82张2类别
  • PyTorch GPU加速实战:如何用TORCH_CUDA_ARCH_LIST榨干你的显卡性能(附常见GPU架构查询表)
  • 手把手教你用ABAP2XLSX解析前端上传的Excel文件流(含完整代码)
  • 不只是添加:手把手教你用Python脚本+本地工具,打造个人微信表情包管理流水线
  • Java里集合框架包含哪些核心接口
  • 2026年学霸同款 8个AI论文工具:本科生毕业论文写作与格式规范全测评
  • (全网最全)分享8款AI工具,快速降低论文AIGC率!
  • MicroROS WiFi通信实战:如何用UDP协议实现ROS2节点无线调试(含避坑指南)
  • 在Java中如何处理长数字读写
  • 10款主流论文降ai工具推荐(2026年免费降AI工具推荐,含免费降ai率版)
  • 看完就会:AI论文平台,千笔写作工具 VS 灵感风暴AI,毕业论文全流程更省心!
  • 安培环路定理实战指南:从无限大平面到圆柱导体的5种经典模型拆解
  • 如何在Linux系统中安装Java
  • 【架构心法】撕碎“0与1”的完美幻觉:顶级嵌入式软件架构师的物理学防线与硬件分析底牌
  • React15 - React CSS Modules BEM命名实践
  • 在Java里Comparable接口解决了什么问题
  • 没有独立显卡也能玩转OmniParser?Win10无GPU环境搭建实测与避坑指南
  • 【架构心法】撕碎“永不宕机”的傲慢:顶级控制系统的绝对底线,论“快速失效(Fail-Fast)”的物理级慈悲
  • Ubuntu安装后必做第一步:手把手教你换清华/阿里源,让apt-get飞起来
  • FileZilla+FTP服务器搭建:如何安全共享文件给远程团队(含权限配置详解)
  • 【2026年最新600套毕设项目分享】springboot林业资源管理系统(14223)
  • 别再复制粘贴了!Qt6 QML自定义控件从开发到发布,保姆级避坑指南(含插件制作)
  • 【2026年最新600套毕设项目分享】springboot尿毒症健康管理系统(14224)
  • 多尺度特征融合在目标检测中的实战应用与优化策略
  • 在CLion中配置LVGL模拟器:从环境搭建到界面调试
  • 论文写不动?AI论文网站千笔 VS 文途AI,全场景通用更高效!
  • Ubuntu下CLion切换Clang编译器完整指南(解决找不到标准库问题)
  • 零基础避坑指南免费录音转文字包教包会,干货轻松掌握
  • 假装这是PSCAD的齿轮箱配置参数
  • 从一次失败的Ping说起:手把手用华为eNSP调试跨网段通信,排查路由配置和ARP缓存的那些坑