Java静态变量笔记
前言
在Java中,静态变量是使用关键字`static`修饰的变量,也称为类变量。本文总结一些静态变量的知识点,方便大家温习。
static String baby = "hello world";
综合知识点
1. 静态变量是独立于任何对象的,因此可以直接通过类名访问,例如`ClassName.staticVariable`,属于类,与对象无关,所以所有对象共享静态变量。
2. 静态变量在类被加载时初始化,它的生命周期与类相同,当类被卸载时静态变量也会被销毁。
3. 静态变量在内存中的位置是在方法区(Method Area)中,而不是在堆(Heap)中。
4. 静态变量通常用于表示类级别的属性或共享的常量,比如`Math.PI`就是一个常用的静态变量示例。
5. 静态变量可以被所有对象实例共享,因此当一个对象对静态变量进行修改时,其他对象访问的是同一个静态变量,所以也会受到影响。
6. 静态变量的值在整个程序运行期间保持不变,除非显式地进行修改。
什么时候用静态变量?
1. **常量**
如果一个变量的值在整个程序中都是固定不变的,可以使用静态变量来表示常量。
```java
public static final int MAX_COUNT = 100;
```
2. **所有对象共享数据**
如果某个数据是所有实例共享的,可使用静态变量
```java
public static int instanceCount = 0;
```
3. **工具类**:静态变量可以用在工具类中,保存工具类的状态或配置信息
```java
public static final String DEFAULT_ENCODING = "UTF-8";
```
4. **单例模式**:在单例模式中,静态变量用来保存单例对象的引用。
```java
private static Singleton instance;
```
注意事项
静态变量在内存中会一直存在直到程序结束,因此过度使用静态变量可能导致内存占用过高,甚至可能引起内存泄漏问题。因此,在使用静态变量时要慎重考虑其生命周期和作用域。比如你创建了1000个对象,都使用静态变量引用。。。。。。。
GPT给的建议
1. 静态变量称为类变量,它被所有类的实例所共享
2. 静态变量在类加载时被初始化,只会在类加载的时候初始化一次
3. 静态变量可以通过类名直接访问,无需创建类的实例,当然也能通过对象访问
4. 静态变量存储在方法区中,而不是在堆内存中(指虚拟机内存区域)
5. 静态变量使用全大写字母命名,方便的与实例变量区分
6. 静态变量值可在类的生命周期内被修改,不推荐频繁修改
7. 静态变量用于实现常量,例如 Math.PI 是一个常量静态变量
8. 静态变量用于共享数据,比如计数器或者共享的配置信息
总结
1、静态变量,可以用,但是不要滥用
2、当所有对象共享同一份数据,建议用静态变量,比如有个Person类,统计总人口
class Person {
public static int TOTAL = 0;
}
3、静态变量占用的内存空间,随着类的生命周期在一起,这点尤其注意,滥用静态变量,会把你的内存撑爆了