A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huima 中级黑马   /  2013-4-14 17:48  /  1311 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 huima 于 2013-4-15 08:39 编辑

静态变量和实例变量的区别是什么,求解答???

5 个回复

倒序浏览
java类的成员变量有俩种:
一种是被static关键字修饰的变量,叫类变量或者静态变量
另一种没有static修饰,为实例变量

类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。

而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
你说的实例变量是类的成员变量吧?成员变量与静态变量的区别如下:

1、两个变量的生命周期不同

成员变量随着对象的创建而存在,随着对象的被回收而释放

静态变量随着类的加载而存在,随着类的消失而消失

2、调用方式不同

成员变量只能被对象调用

静态变量可以被对象调用,还可以被类名调用

3、别名不同

成员变量也称为实例变量

静态变量称为类变量

4、数据存储位置不同

成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据

静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
静态变量属于类,不用实例化就已经存在,所有的实例共享同一个静态变量,可以通过类名和实例名来访问。
实例变量属于实例,每个实例都有自己的这个变量,只能通过实例名来访问。
回复 使用道具 举报
基本就两点吧
1, 静态变量随着类的加载而存在于方法区中,实例变量随着对象的建立而存在于堆内存中。
2,静态变量的生命周期最长随着类的消失而消失,实例变量的生命周期随着对象的消失而消失。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报

        存在位置
                静态变量随着类的加载而存在于方法区中
                实例变量随着对象的建立而存在于堆内存中
        生命周期
                静态变量的生命周期长,随着类的消失而消失
                实例变量生命周期随着对象的消失而消失
        所属不同
                静态变量也称之为类变量,属于整个类,被整个类共享
                实例变量是对象的特有数据,所属于对象

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马