Java static静态方法 静态变量

本文详细介绍了Java中Static关键字的用途及特性,包括Static变量、Static方法、Static初始化块的概念、作用范围及其调用方式。同时解释了Static成员如何被所有对象共享,并探讨了在类初始化过程中的执行顺序。

   1.它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,

   2.对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!

   3.可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”。

   4.用static声明的方法为静态方法

   5.不需要对象,就可以调用(类名.方法名)

   在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。

   可以通过对象引用或类名(不需要实例化)访问静态成员。

普通方法中可以调用静态的属性和方法,静态的方法不能调用非静态的属性和方法;

public Test{

static {System.out.println("可以初始化");}


1.如果希望加载后,对整个类进行某些初始化操作,可以使用static初始化块。

2.是在类初始化时执行,不是在创建对象时执行。

3.静态初始化块中不能访问static成员。

4.执行顺序:上溯到Object类,先执行Object的静态初始化块,在向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。

### 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].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_Pmc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值