静态变量java static

静态变量在类装载时初始化,只分配一块存储空间。
在装载过一次后,之后产生新对象时,静态变量就不再被初始化。
例子:

public class StaticClass {

    private static String s = init();
    private static String init(){
        System.out.println("init...");
        return "String";
    }
}
对这个类测试:
public class MainStaticClass {
    public static void main(String[] args) {
        StaticClass c = new StaticClass();
        StaticClass d = new StaticClass();
    }

}
输出:init...

不会出现两行的init...



### Java 中 `static` 静态变量的作用 静态变量Java 中具有特定的作用和特性。它们属于类而非某个具体的对象实例,因此可以通过类名直接访问而不必创建该类的对象[^1]。这意味着无论创建多少个类的实例,所有的实例都会共享同一个静态变量静态变量的一个重要特点是其生命周期贯穿程序运行始终,在类加载时完成初始化,并且只会在 JVM 卸载类时销毁。这种设计使得静态变量非常适合用于存储全局状态或配置信息[^5]。 #### 使用场景分析 以下是几种常见的使用场景: 1. **资源共享** 当多个对象需要共享某些数据时,可以定义这些数据为静态变量。例如,如果一个班级里的所有学生都拥有相同的老师名字,则可将此属性声明成静态变量以便统一管理并减少内存消耗。 2. **计数器功能实现** 借助静态变量可以轻松统计某一类型已创建了多少个实例。比如在一个工厂模式下记录生产的产品数量等情形非常适用。 3. **常量定义** 虽然通常推荐用 final 来修饰真正意义上的不变值(即编译期常量),但在一些特殊情况下也可以利用普通的静态变量作为逻辑上的“准常量”。 4. **单例模式支持** 在构建单例模式时经常会涉及到静态成员的应用——通过设置私有的构造函数以及提供公共的获取唯一实例的方法来控制外部无法随意新建其他副本;而内部保存这个唯一的实体则往往采用的是静态形式。 ```java class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized(Singleton.class){ if(instance==null){ instance=new Singleton(); } } } return instance; } } ``` 另外需要注意的一点是关于线程安全性方面的问题,在多线程环境下操作未加锁保护的共享资源可能会引发竞态条件等问题,所以在实际开发过程中应当谨慎对待此类情况下的同步处理机制[^4]。 最后强调一下,尽管 C++ 和 Java 都存在名为 'static' 的关键字,但是两者之间存在着本质区别 —— 尤其是在作用域层面的表现上完全不同 。对于刚接触这两种语言的学习者来说容易造成误解 ,故应当时刻牢记上述差异以免混淆概念 [^3].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值