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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 古银平 中级黑马   /  2012-5-20 23:22  /  1661 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 古银平 于 2012-5-21 10:41 编辑

实例变量和类变量的区别是什么?

4 个回复

倒序浏览
类变量也叫静态变量,实例变量也叫对象变量。
区别在于,类变量是所有对象共有,它属于一个共享数据,只有一个对象将其值改变,其他的对象得到的就是改变后的结果,而实例变量则属于对象私有的,某一个对象将其值改变,不影响其他的
回复 使用道具 举报
类变量是共享的,实例变量是私有的
回复 使用道具 举报
本帖最后由 杨康 于 2012-5-20 23:35 编辑

在写法上的区别,类变量前有static修饰,实例变量没有。
存在于内存中的位置也不同,类变量是随着类的加载而存在,可以不需要对象而存在于内存。而实例变量是随着对象的创建而存在。
类变量比实例变量还多了个调用方法,整个代码块中,只要该类被加载,就可以使用  类名.类变量  的方法调用。而实例变量只有在对象存在的情况下才能被调用。
回复 使用道具 举报
类变量又叫静态成员变量,它不需要创建对象就可以已经在内存中存在了。类就像一份说明书,说明这种类的实例对象的规格。
而在创建实例对象的时候,内存中会为每一个实例对象的每一个非静态成员变量开辟一段内存空间,用来存储这个对象所有的非静态成员变量值。即使两个不同的实例对象是属于同一个class类,但是它们的同名非静态成员变量在内存中占用的空间是不同的。
而静态成员变量也就是类变量不同。所有的实例对象都共用一个类变量,内存中只有一处空间是放这个类变量值的。因此,如果一个对象把类变量值改了,另外一个对象再取类变量值就是改过之后的了。
public class A{
  static int a; //带static定义的变量叫类变量,也叫静态变量
  int b;        //不带static定义的变量叫实例变量,也叫非静态变量,一般所说的成员变量指这个
  {int ab;} //局部变量
  public void s(){
    int c; //定义在方法里面或{}里面的叫局部变量
    {int d;}
  }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马