这只是一种规范,没什么其他的,你可以这样理解。
对于static的成员,我们都知道是他是属于类的,因此与这个类的对象没有关系,所以无论这个类是否是null,都可以调用类的static 函数

解决方案 »

  1.   

    看来你对static还不大明白,我只知道,肯定能这样用,至于为什么那就是static的用法。你好好看看有关static部分的java我想你能看懂的。
      

  2.   

    http://www.csdn.net/expert/topic/587/587079.xml?temp=.7879602
      

  3.   

    因为static是属于类的而不是属于蒙一个对象,所以,系统在调用static
    函数时不回去验证对象是不是为NULL,因为他现在类的时候初始化了(即已经分配了地址空间了),而不是在对象调用的时候,才初始化
    所以,系统是能找到其地址的,并能调用属于类调用而不是对象调用
    明白了吗?
    给分给分,^-^
      

  4.   


    processorA().processorB(); 
    编译时:编译器发现processorA()的返回类型是Q1 
    Q1的processorB()是static,不需要把processorA()返回的对象传递给processorB(),所以不会抛出NullPointerException((Q1)null).processorB();一样可以正常运行
      

  5.   

    都说了这么多了,来晚了:(
    一切都是因为static被它修饰的对象是存放在内存中的静态存储区当中,而不是堆载中.它在你还没有执行main以前就已经被初始化了,并一直存放在静态存储区之中,它只有一个拷贝,不属于你的某一个实例,而属于该类的所有实例共享之.static方法的最大特征就是不必实例化它所在的类就可以直接调用它,为什么??因为编译器早就已经在静态存储区里面加载了它.常用的NEW是动态实例创建,在堆里面加载对象实例在载里面分配指针,它的指针必须指向一个对象才有意义(所以不允许为NULL).而现在static方法他奶奶的早就在静态存储区中创建好了,直接区调就是了,还在乎什么指针???
       Q1.processorB();
       奶奶的,今天怎么老碰到问static的??!!到C++那边看看去...要加分啊!!!
      

  6.   

    static定义的字段,不管你的类有没有实例化,是都可以访问的.
      

  7.   

    static对象存放在内存中的静态存储区而不是堆载中
      

  8.   

    谢谢各位!
    wangtaoyy(匕吐匕) 给的例子很有说服力:((Q1)null).processorB();一样可以正常运行
    现在已经很清楚了,开始给各位加分了。