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

final static 中是什么final static联合使用呢

final static 联合使用详解

final 和 static 在 Java 中经常一起使用,主要用来定义类级别的常量。这种组合具有两者的特性:

基本用法

public class Constants {// 典型的 final static 常量定义public static final double PI = 3.141592653589793;public static final int MAX_CONNECTIONS = 100;public static final String APPLICATION_NAME = "MyApp";
}

联合使用的特点

  1. 不可变性 (final)

    • 值一旦初始化后不能被修改

  2. 类级别共享 (static)

    • 所有实例共享同一个变量

    • 可以直接通过类名访问,无需创建实例

  3. 命名惯例

    • 通常使用全大写字母,单词间用下划线分隔

    • 这是 Java 中常量的标准命名方式

初始化时机

  1. 直接初始化

    public static final int TIMEOUT = 30; // 直接初始化
  2. 静态代码块初始化

    public static final String CONFIG_FILE;static {CONFIG_FILE = loadConfigFile(); // 复杂初始化逻辑
    }

内存特性

  • 由于是 static,只在内存中存在一份

  • 由于是 final,JVM 可以进行优化,可能内联这些值

典型应用场景

  1. 数学/物理常量

    public static final double EULER_NUMBER = 2.71828;
  2. 配置参数

    public static final int MAX_LOGIN_ATTEMPTS = 5;
  3. 枚举替代方案 (在Java 5之前)

    public static final int STATUS_ACTIVE = 1;
    public static final int STATUS_INACTIVE = 0;
  4. 单例模式实现

    public class Singleton {private static final Singleton INSTANCE = new Singleton();private Singleton() {}public static Singleton getInstance() {return INSTANCE;}
    }

注意事项

  1. 线程安全final static 变量的初始化是线程安全的

  2. 编译时常量:如果使用基本类型或String直接量初始化,会被编译器视为编译时常量

    public static final int VERSION = 1;  // 编译时常量
    public static final long TIMESTAMP = System.currentTimeMillis(); // 不是编译时常量
  3. 不可变对象:对于引用类型,final 只保证引用不变,对象内容仍可能改变

    public static final List<String> NAMES = new ArrayList<>();
    // 可以执行 NAMES.add("Alice"); 虽然不推荐这样设计

这种组合是Java中定义常量的标准方式,广泛应用于各种框架和库中。

相关文章:

  • matlab simulink中理想变压激磁电流容易有直流偏置的原因分析。
  • shell脚本部署disu博客
  • 多视觉编码器协同与高低分辨率特征融合技术综述
  • Docker小游戏 | 使用Docker部署文字修仙网页小游戏
  • 洛谷题目:P8856 [POI 2002] 火车线路 题解(有一点难)
  • Kaamel白皮书:2025版COPPA落地实操指南
  • 四 YARN配置和HBase配置
  • 爱普生SG-3031CM晶体振荡器成为高效节能的时钟理想之选
  • FAQ运用
  • MySQL 锁等待超时问题解析:Lock wait timeout exceeded;try restarting transaction
  • 文字光影扫过动效
  • GAEA情感坐标的技术架构与系统集成
  • KAG:通过知识增强生成提升专业领域的大型语言模型(二)
  • LIMS试验检测管理系统概要设计说明书,LIMS实验室系统建设方案
  • Go语言入门:目录与链接
  • make学习三:书写规则
  • 【质量管理】TRIZ(萃智)的工程系统进化法则
  • 交叉编译tcpdump静态编译单个文件
  • DHCP 服务器运行流程图
  • NHANES指标推荐:BUCR
  • 餐饮店直播顾客用餐,律师:公共场所并非无隐私,需对方同意
  • 幸福航空取消“五一”前航班,财务人员透露“没钱飞了”
  • 一回合摘下“狮心”,张名扬霸气回应观众:再嘘一个我听听
  • 国家核安全局局长:我国核电进入大规模建设高峰期,在建规模超其他国家总和
  • 上海潮汕联谊会举行换届大会,陈湖文当选会长
  • 张家界乒乓球公开赛设干部职级门槛引关注,回应:仅限嘉宾组