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

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、静态变量占用的内存空间,随着类的生命周期在一起,这点尤其注意,滥用静态变量,会把你的内存撑爆了

相关文章:

  • 并发笔记-并发问题与事件驱动模型(五)
  • Spring Bean有哪几种配置方式?
  • Nacos源码—8.Nacos升级gRPC分析五
  • neptune系统详解
  • mysql dump 导入导出用法
  • js 画立方体软件开发日记2
  • MySQL——性能调优
  • 面试题:C++虚函数可以是内联函数吗?
  • 嵌入式学习笔记 - MSB, LSB
  • 策 略 模 式
  • 马铃薯土豆幼苗与杂草检测数据集VOC+YOLO格式3051张2类别
  • cursor 如何在项目内自动创建规则
  • CSDN博客粘贴图片失败如何解决
  • 网络编程epoll和udp
  • 联想 SR550 服务器,配置 RAID 5教程!
  • CSRF记录
  • Megatron系列——张量并行
  • Clang实现C++文件分析,含Python实战
  • 嵌入式系统:从基础到应用的全面解析
  • MySQL 备份与恢复
  • 共情场域与可持续发展——关于博物馆、美术馆运营的新思考
  • 广州一饮品店取名“警茶”?市监局:取名没问题,但图像会产生误解
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式并发表重要讲话
  • 俄乌拟在土耳其举行会谈,特朗普:我可能飞过去
  • 从这些电影与影像,看到包容开放的上海
  • 泽连斯基批准美乌矿产协议