这是java中最基本也是最迷惑人的地方-----
一切staic的函数和变量,都先于类之前初始化或执行。
对于静态变量,可以不用new一个这个类的实例就可以进行访问,而且无论new了多少个实例,
这个变量都只有一份,所有实例见到的值都是相同的。

解决方案 »

  1.   

    to  hoxisoft(一切全为你)对象的初始化跟是否为static有关.方法的执行先后好象跟这个无关吧.
      你说的先于类之前执行的是静态块吧.
      

  2.   

    多用户系统中特别要注意一下static class,因为都是在访问一个共享的类
    还有好象jvm对static也做了优化哦!
      

  3.   

    static 变量和方法是类的方法和变量。
    可以直接调用,大家共享一个
      

  4.   

    就一句话:static先于所有对象划出内存地址,而且,它占上了就不撒手,直到进程结束.
      

  5.   

    http://expert.csdn.net/Expert/topic/1886/1886162.xml?temp=.8385431
      

  6.   

    static就是一个类变量或方法,我是这样想的,static就是这个类本身所固有的一块区域,其存在与类有关而不随实例的生命周期消亡现消亡;所有实例共享这个区域,且有读写的权力,这块区域有持久性和唯一性,因此可以记下最后一个实例对其操作的结果,这点有点像枚举型变量:)
      

  7.   

    比如,声明为static的方法是类方法或类变量,没有的是实力变量或实例方法,类方法不能操作实例变量,还有很多。。
      

  8.   

    static 成员是类层次的,可以不用先创建对象就可以使用。
      

  9.   

    static变量在加载类的时候就加载了,不用实例化就可以访问。
      

  10.   

    还有还有,用static 标识的数据只初始化一次,在以后再用的时候,就不会再初始化了~!
      

  11.   

    而且在前段时间在CSDN上看到一个贴子有关这方面的东西,于是把那个程序抄了下来,让大家看一看,可不可以帮大家理解static (这个贴子的主人可不要说我偷盗呀~!)
    public class TestStatic{
    public static void main(String[] args){
        TestClass t=TestClass.getObjTestClass();
        System.out.println(t.counter1);
        System.out.println(t.counter2);
    }
    }
    class TestClass{
    * public static TestClass t=new TestClass();
    public static int counter1;
    public static int counter2=0;
    private TestClass(){
    counter1++;
    counter2++;
    }
    public static TestClass getObjTestClass(){
    return t;
    }
    }
    这个程序是结果是
    counter1=1
    counter2=0
    将有*的那一行,放在 public static int counter2=0;之后的任何一个位置,结果是
    counter1=1
    counter2=1
      

  12.   

    最常用的是统计一个类有多少个对象,比如一个人事,或是什么书籍管理的类,如果要统计一下总数的话,用static比较简单。
      

  13.   

    static 是静态的意思,它在类实例以前就装入内存,只初始化一次,各实例之间可共享,但静态的方法只能调用静态变量和方法.
      

  14.   

    还有一个,大家不要忘记。
    静态构造器,类级别的构造器。
    static {
        var = value ;
        …………… ;
    }