程序1:
public class Hello {
public static void main(String[] args) {
 int  i=0;
System.out.println(i);
}
}
程序2:
public class Hello {
public static void main(String[] args) {
static int  i=0;
System.out.println(i);
}
}程序1可以,程序2为什么就不行了?static int  i=0;错在哪里了?
如果这样写又可以
public class Hello {
                  static int  i=0;
public static void main(String[] args) {
System.out.println(i);
}
}
请大家帮忙,谢谢!!

解决方案 »

  1.   

    我只知道static可以修饰成员变量和方法。也就是
    class xxx{
    static int iii;
    static ccc(){
    ...}}
    这样的。具体为什么也没想过,等哪位解释解释吧
      

  2.   

    是不是是因为static修饰的变量是静态变量的原因啊?
    静态变量的定义。
      

  3.   

    static是成员变量及方法的修饰符,是属于类本身的数据字段,在加载类时就已经初始化,为内存中保存.在方法体内声明的只是局部临时变量,当方法体结束后,这些临时变量会自动销毁,释放缓存空间,所以用static来修饰临时变量,是说不过去的!
      

  4.   

    在程序启动的时候要将所有的static变量初始化,你写在方法中JDK可能会看不到这个东东;再说没有人像你那么用的O。
      

  5.   

    public class Hello {
    public static void main(String[] args) {
    static int  i=0; //Illegal modifier for parameter i; 
                                       //only final is permitted.
    System.out.println(i);
    }
    }---初学者
      

  6.   

    static是类层次的东西,当然在main中定义static int  i=0;是错误的
      

  7.   

    static是成员变量及方法的修饰符,是属于类本身的数据字段,在加载类时就已经初始化,为内存中保存.在方法体内声明的只是局部临时变量,当方法体结束后,这些临时变量会自动销毁,释放缓存空间,所以用static来修饰临时变量,是说不过去的!
    //已经很清楚了吧,
      

  8.   

    我认为static变量的作用范围是在程序生命周期内存在的,方法它只是在调用的时候临时存在的,
    我认为static变量定义在方法中用一个比喻是:大脚穿小鞋,配不上
      

  9.   

    static是不属于方法的,是属于一个类的,
    是在类加载的时候执行的(也就是初始化),
    而方法则是在类实例化的时候才开始执行,
    你在方法里定义static当然行不通了
    另楼主应该注意,初始化和实例化的区别
      

  10.   

    我觉得首先 局部变量声明不能使用可以应用于实例变量的多数修饰符 唯一可以应用于局部变量的修饰符是final.所以把static用于局部变量是不对的.  还有就是static的变量和方法是属于类的.
      

  11.   

    在C语言的函数里,是可以有static变量的,它的生存空间跟外部的static相同,在堆上。但只限于该函数内使用。个人认识没多大用处,而且使代码难于理解。大概java也是出于这个原因,没有提供这个功能。