2 t2045817161 t2045817161 于 2016.04.18 17:41 提问

成员变量的问题 static修饰符

图片说明

为什么成员变量s前面一定要加static,否则就报错

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.19 03:38
 这个道理很简单,实例变量是每个对象实例都有的,而静态方法是一个类才有一个的。
看下面的代码
class Test
{
public int i;
static void foo()
{
println(i);
}
}
我们假设这代码是可以编译的
看如下调用
Test t1 = new Test();
t1.i = 1;
Test t2 = new Test();
t2.i = 2;
Test.foo(); //请问输出什么?输出1还是输出2?
magicioney
magicioney   2016.04.18 17:48

如果说类是模具,那对象就是模具压出来的月饼。静态的方法和属性就好比是模具的方法和属性。非静态的方法和属性,就好比是月饼的方法和属性。所有的这些都是自己调用自己的。月饼A自己的方法只能用月饼A自己的变量。同理,模具自己的方法,也只能调用模具自己的变量。

magicioney
magicioney   2016.04.18 17:45

静态方法里只能调用静态资源,你得main方法是静态方法,只能调用静态成员变量

java6218
java6218 赞成
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!