前几天一直在讨论的关于这段程序的问题
public class A {
public static int a = 0;
public static void main(String[] args) {
for(int i = 0;i < 10;i++){
a = a++;
System.out.println(a);
}
System.out.println(a);
}
}
其中a = a++的问题已经基本明白了,可是关于static的问题我还是不甚清楚,问一下,以static定义的a怎么会改变它的值呢??

解决方案 »

  1.   

    用static修饰的数据或方法只能代表这个数据或方法跟对象无关,它们只属于类,可以用 “类名.”直接访问你说的“不能改变”应该指的是 final ,用这个修饰的变量值不可修改,如果修饰类则该类不可被继承
      

  2.   

    static变量是属于class的,不是属于一个calss实例的,引用static时候要用class name
    楼主可以用A.a 来对a进行赋值,如:A.a = 4;这样a的值就改变了
      

  3.   

    static 是在编译的时候就分配的内存块,该块要到程序退出才被收回。
    static的内容是可以改变的
      

  4.   

    如:
    class Test{
    public static int i=5;
    public static void func(){
       ...
    }
    }
    这用Test.i和Test.func()就可以访问该数据成员和方法