主题:[讨论]类变量和实例变量的区别
铱蹨劲鑀
[专家分:0] 发布于 2007-11-11 14:53:00
[size=3]哪位大虾能简要说明一下类变量和实例变量的区别
最好通俗易懂一点[/size]
回复列表 (共5个回复)
沙发
law_barrister [专家分:10] 发布于 2007-11-11 17:01:00
1.声明时的差别
当一个类声明成员变量时,没有使用关键字static声明的为实例成员变量,使用static声明的为类成员变量
2.存储结构的差别
当创建一个对象时,系统会为每一个对象的每一个实例成员变量分配一个存储单元,
使属于不同对象的实例成员变量具有不同的值,而为每一个类成员变量只分配一个存储单元,使所有对象公用同一个类成员变量。
3.引用方式的差别
实例成员变量属于对象,必须通过对象访问,类成员变量属于类,既可以通过类,也可以通过对象访问。
板凳
zcs179895723 [专家分:330] 发布于 2007-11-11 18:16:00
补充一下,在静态的方法里不能直接访问一个类的一般成员变量,只有通过创建该类的对象进行访问,而可以直接访问该类的静态成员变量,即该类的类变量
3 楼
铱蹨劲鑀 [专家分:0] 发布于 2007-11-12 16:07:00
谢谢
好象明白了一点
能不能给个稍微简单的例子给我
4 楼
zcs179895723 [专家分:330] 发布于 2007-11-12 18:38:00
我就简单点写了,比如:
class A
{ int a;
static int b;
A()
{ a=123;
b=456;
}
}
class b
{ public static void main(String []args)
{ A x=new A();
System.out.println("a="+x.a);
System.out.println("b="+x.b);
System.out.println("b="+A.b);
//System.out.println("a="+A.a);这句就有问题 无法从静态上下文中引用非静态 变量 a
}
}
5 楼
铱蹨劲鑀 [专家分:0] 发布于 2007-11-13 17:36:00
哦
结合例子 明白多了
谢谢
我来回复