JAVA中静态变量的问题

public class C{
public static void main(String[] args){
static int a=0;
}
}
为什么这样不行呢?

静态变量只能写在类中而不能写在方法中,因为静态变量也称为类变量,是整个类的所有实例对象都能引用的,而且仅在第一次生成这个类的对象时为这个静态变量分配空间,故这个静态变量对于该类的所有实例对象是公用的。对象如果把变量(非静态变量)写在类的某个方法中,实例对象中的该变量就是私有的了,对象相互间不能引用及修改该变量。

退一步说,所有写在方法中的变量都是局部变量,都不能被方法外部调用。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-05
静态是对成员变量的一种描述;
对于方法中的局部变量,因为方法执行完就无效了,所以就没有 static这一说法,也没有private,protected等等说法。
但是成员变量就不一样了。成员变量是类的一个属性,只要持有类的实例,这个实例的属性就有效,所以才有static这一说法,也有private,protected等等说法。
所以public static void main(String[] args){
static int a=0;
}
应改为public static void main(String[] args){
int a=0;
}
第2个回答  2008-04-05
只有类才存在静态的变量 方法只能对静态变量的操作 不能在方法内试图定义静态变量

否则的话会抛出编译错误

静态变量的本意是为了让所有的对象共享这个变量,如果在方法里面定义静态变量的话就存在逻辑错误了,也达不到你想要目的. 因为在方法定义静态变量根本没有他的任何意义. 任何对象都有自己的方法,即使是静态方法,方法内的变量也是在方法调用时候才开始分配内存,所以你想给成静态的在逻辑上存在问题. 您可以仔细想法其中的原由..
第3个回答  2008-04-05
这样写:
public class C{
static int a=0;
public static void main(String[] args){

}
}

就是这么规定的吧,记住就可以了本回答被提问者采纳
第4个回答  2008-04-05
类有静态变量和静态方法,但方法没有。
相似回答