黑马程序员技术交流社区
标题: 关于静态变量和实例变量的区别的问题 [打印本页]
作者: huima 时间: 2013-4-14 17:48
标题: 关于静态变量和实例变量的区别的问题
本帖最后由 huima 于 2013-4-15 08:39 编辑
静态变量和实例变量的区别是什么,求解答???
作者: ①人←①城市 时间: 2013-4-14 17:50
java类的成员变量有俩种:
一种是被static关键字修饰的变量,叫类变量或者静态变量
另一种没有static修饰,为实例变量
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。
而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期
作者: 何旭程 时间: 2013-4-14 17:53
你说的实例变量是类的成员变量吧?成员变量与静态变量的区别如下:
1、两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象的被回收而释放
静态变量随着类的加载而存在,随着类的消失而消失
2、调用方式不同
成员变量只能被对象调用
静态变量可以被对象调用,还可以被类名调用
3、别名不同
成员变量也称为实例变量
静态变量称为类变量
4、数据存储位置不同
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据
作者: 孙鑫 时间: 2013-4-14 17:55
静态变量属于类,不用实例化就已经存在,所有的实例共享同一个静态变量,可以通过类名和实例名来访问。
实例变量属于实例,每个实例都有自己的这个变量,只能通过实例名来访问。
作者: 沈浩 时间: 2013-4-14 17:56
基本就两点吧
1, 静态变量随着类的加载而存在于方法区中,实例变量随着对象的建立而存在于堆内存中。
2,静态变量的生命周期最长随着类的消失而消失,实例变量的生命周期随着对象的消失而消失。
作者: U芽Lady 时间: 2013-4-14 18:00
存在位置
静态变量随着类的加载而存在于方法区中
实例变量随着对象的建立而存在于堆内存中
生命周期
静态变量的生命周期长,随着类的消失而消失
实例变量生命周期随着对象的消失而消失
所属不同
静态变量也称之为类变量,属于整个类,被整个类共享
实例变量是对象的特有数据,所属于对象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |