【Java开发指南 | 第七篇】静态变量生命周期、初始化时机及静态变量相关性质

简介: 【Java开发指南 | 第七篇】静态变量生命周期、初始化时机及静态变量相关性质

生命周期

生命周期(Lifecycle)是指一个对象从创建到销毁的整个过程。


静态变量的生命周期与程序的生命周期一样长,即它们在类加载时被创建,在整个程序运行期间都存在,直到程序结束才会被销毁。因此,静态变量可以用来存储整个程序都需要使用的数据,如配置信息、全局变量等。


初始化时机

静态变量在类加载时被初始化,其初始化顺序与定义顺序有关。


如果一个静态变量依赖于另一个静态变量,那么它必须在后面定义。


public class MyClass {
    public static int count1 = 0;
    public static int count2 = count1 + 1;
    // 其他成员变量和方法
}

举例:


public class ice {
    static int b=1;
    static int a = b+1;
    public static void printValues() {
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
    public static void main(String[] args) {
        printValues();
    }
}




a依赖于b,但a在b前定义,导致编译错误:



常量和静态变量的区别

常量也是与类相关的,但它是用 final 关键字修饰的变量,一旦被赋值就不能再修改。与静态变量不同的是,常量在编译时就已经确定了它的值,而静态变量的值可以在运行时改变。


另外,常量通常用于存储一些固定的值,如数学常数、配置信息等,而静态变量通常用于存储可变的数据,如计数器、全局状态等。


静态变量相关性质

静态变量的访问修饰符

静态变量的访问修饰符可以是 public、protected、private 或者默认的访问修饰符(即不写访问修饰符)


需要注意的是,静态变量的访问权限与实例变量不同,因为静态变量是与类相关的,不依赖于任何实例。


静态变量的线程安全性

Java 中的静态变量是属于类的,而不是对象的实例。因此,当多个线程同时访问一个包含静态变量的类时,需要考虑其线程安全性。


静态变量的命名规范

静态变量(也称为类变量)的命名规范通常遵循驼峰命名法,并且通常使用全大写字母,单词之间用下划线分隔,并且要用 static 关键字明确标识。


1、使用驼峰命名法: 静态变量的命名应该使用驼峰命名法,即首字母小写,后续每个单词的首字母大写。例如:myStaticVariable。


2、全大写字母: 静态变量通常使用全大写字母,单词之间用下划线分隔。这被称为"大写蛇形命名法"(Upper Snake Case)。例如:MY_STATIC_VARIABLE。


3、描述性: 变量名应该是有意义的,能够清晰地表达该变量的用途。避免使用单个字符或不具有明确含义的缩写。


4、避免使用缩写: 尽量避免使用缩写,以提高代码的可读性。如果使用缩写是必要的,确保广泛理解,并在注释中进行解释。


目录
相关文章
|
6天前
|
Java 编译器
Java语言中的初始化:深入探索
Java语言中的初始化:深入探索
|
6天前
|
Java 调度
Java的线程创建与生命周期技术性详解
Java的线程创建与生命周期技术性详解
24 0
|
7天前
|
设计模式 Java 数据安全/隐私保护
Java的想成生命周期与状态
Java的想成生命周期与状态
|
8天前
|
存储 Java
Java二维数组的初始化技术详解
Java二维数组的初始化技术详解
16 0
|
8天前
|
存储 设计模式 Java
深入解析Java中的静态变量
深入解析Java中的静态变量
|
8天前
|
存储 Java 编译器
Java一维数组的初始化技术详解
Java一维数组的初始化技术详解
18 0
|
8天前
|
存储 Java 索引
Java数组概述与静态初始化技术
Java数组概述与静态初始化技术
17 1
|
11天前
|
存储 Java
Java静态变量在静态方法内部无法改变值
在Java中,静态变量属于类本身,而非类的实例,因此可以在没有创建实例的情况下通过类名访问和修改。若在静态方法中无法改变静态变量的值,可能是因为逻辑错误、局部变量覆盖、误用实例访问或尝试修改`final`静态变量。要访问静态变量,直接通过类名调用即可。修改静态变量同样直接,只需通过类名加变量名并赋新值。静态变量与实例变量的主要区别在于生命周期、存储位置、访问方式和数据共享。静态变量在整个程序运行期间存在,所有实例共享,而实例变量每个对象独有。
|
15天前
|
存储 Java 测试技术
滚雪球学Java(37):深入了解Java方法作用域和生命周期,让你写出更高效的代码
【5月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
24 0
滚雪球学Java(37):深入了解Java方法作用域和生命周期,让你写出更高效的代码
|
22天前
|
存储 Java 测试技术
滚雪球学Java(30):多维数组:定义和初始化一次搞定
【5月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
19 0
滚雪球学Java(30):多维数组:定义和初始化一次搞定