static 变量属于整个类,不能让哪一个函数所特有,因为他在内存中不允许有其他拷贝,他是静态的,既然声明为了static 那么整个类的成员都可以用,而你又把他放在一个特定的函数里当然是矛盾的,不允许了,static 是有争议的,他不符合对象编程的思想的,但是有他存在的理由,所以谨慎用之

解决方案 »

  1.   

    static不只是属于一个类,它实际上是一种全局域(field),只是封装在一个类中。因为对象还没有实例化之前就可以调用,比如程序入口函数main()。既然是全局域,怎么可能定义为局部变量呢?
      

  2.   

    可以很容易的理解  你把“static变量” 就认为是 “类的变量”就可以了。
    其他的“成员变量” 就是 “实例(对象)的变量”。java和C是不同的,局部static的理解相对比较隐讳,java一个很重要的地方或说目的就是简化C/C++语法,所以,java不再支持这种语法。
      

  3.   

    那么C++为什么可以呢?java是出于哪方面的考虑不使用静态局部变量呢?
      

  4.   

    不考虑内存分配,不考虑生命周期。只考虑语义。static是静态之意static的local variable,是指同一个instance在每次call这个方法的时候保持静态,还是指不管什么instance都保持同一个呢?如果考虑内存分配,生命周期,即使是明确了意思,也无法做到static local variable, C#应该也不行