黑马程序员技术交流社区

标题: 实例变量和类变量(已解决) [打印本页]

作者: 古银平    时间: 2012-5-20 23:22
标题: 实例变量和类变量(已解决)
本帖最后由 古银平 于 2012-5-21 10:41 编辑

实例变量和类变量的区别是什么?
作者: 李保成    时间: 2012-5-20 23:26
类变量也叫静态变量,实例变量也叫对象变量。
区别在于,类变量是所有对象共有,它属于一个共享数据,只有一个对象将其值改变,其他的对象得到的就是改变后的结果,而实例变量则属于对象私有的,某一个对象将其值改变,不影响其他的
作者: 钟成军    时间: 2012-5-20 23:28
类变量是共享的,实例变量是私有的
作者: 杨康    时间: 2012-5-20 23:31
本帖最后由 杨康 于 2012-5-20 23:35 编辑

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2