静态变量和实例变量的生命周期
2009-08-10 23:05
176 查看
类的成员变量有两种:一种是被 static 关键字修饰的变量,叫类变量或静态变量;
另一种是没有 static 关键字修饰的变量,叫实例变量。
区别:
1、类的静态变量在内存中只有一个,Java 虚拟机在记载类的的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名被访问。静态变量的生命周期取决于类的生命周期,当加载类的时候,静态变量被创建并分配内存空间,当卸载类的时候,静态变量被销毁并撤销所占内存。
2、类的每个实例都有相应的实例变量。没创建一个类的实例,Java 虚拟机就会为实例变量分配一次内存,实例变量位
4000
于堆区中。实例变量的生命周期取决于实例的生命周期,当创建实例的时候,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁并撤销所占内存。
假如成员变量(包括静态变量和实例变量)是引用变量,那么当该成员变量结束生命周期时,并不意味着它所引用的对象也一定结束声明周期。
变量的生命周期和对象的生命周期是不同的概念。
静态变量可以作为所有的实例的共享数据,它不依赖于特定的实例;而实例变量属于特定的实例。
另一种是没有 static 关键字修饰的变量,叫实例变量。
区别:
1、类的静态变量在内存中只有一个,Java 虚拟机在记载类的的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名被访问。静态变量的生命周期取决于类的生命周期,当加载类的时候,静态变量被创建并分配内存空间,当卸载类的时候,静态变量被销毁并撤销所占内存。
2、类的每个实例都有相应的实例变量。没创建一个类的实例,Java 虚拟机就会为实例变量分配一次内存,实例变量位
4000
于堆区中。实例变量的生命周期取决于实例的生命周期,当创建实例的时候,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁并撤销所占内存。
假如成员变量(包括静态变量和实例变量)是引用变量,那么当该成员变量结束生命周期时,并不意味着它所引用的对象也一定结束声明周期。
变量的生命周期和对象的生命周期是不同的概念。
静态变量可以作为所有的实例的共享数据,它不依赖于特定的实例;而实例变量属于特定的实例。
相关文章推荐
- java中的静态变量和实例变量的生命周期
- Java 静态变量和实例变量的生命周期
- Java学习疑点(2)--被static修饰的静态变量与实例变量之间生命周期的区别
- Java 静态变量和实例变量的生命周期
- java中的静态变量和实例变量的生命周期
- java中的静态变量和实例变量的生命周期
- java中的静态变量和实例变量的生命周期
- 静态变量与实例变量区别
- 静态变量与实例变量
- java:静态方法,静态变量,实例方法,实例变量的关系 ----李雪
- struts中Action的线程安全与实例变量和静态变量的共享问题
- 成员变量和局部变量 (静态变量)类变量和实例变量
- Java中静态变量与实例变量的区别 静态变量活用实现类似session的功能
- Java中静态变量(类变量)、实例变量、局部变量和成员变量
- java 局部变量,类变量,实例变量的作用域,生命周期
- 变量,常量,静态变量的使用实例
- Java 中静态变量和实例变量区别
- 静态变量与实例变量的区别
- Java 中局部变量、静态变量和实例变量区别
- c++中全局变量,全局静态变量,局部静态变量,局部变量的作用域和生命周期