因为main是静态的 
如果你rand定义不是静态的  那么让main访问的时候从那个实例里面取出rand呢?

解决方案 »

  1.   

    java规定类中的静态方法只能使用其外部的静态成员。主函数是static的,所以要用静态外部实例。
    原因:举个例子,假设不使用static也成立
    class example{
        static String s1;
        String s2;
        static void test(){
            s1="static";
            s2="not static";
        }
    }
    如果上面是合法的,由于test函数是静态的,那么你就可以在程序中直接使用example.test()。
    这样做就会导致矛盾,example类还没有实例化就在静态方法中使用了非静态的变量s2。
      

  2.   

    如果不是static的方法或者属性
    那么这些方法和属性是属于定义他们的类的
    根据类的定义,访问类的属性和方法必须通过类的实例来调用

    st=new example();
    这时可以访问st的属性和方法:
    st.s="1234";
    st.storage();而根据static的感念,定义为static的属性和方法是独立于类的,所以可以直接调用。其实也可以将static main()看作是个独立于类的方法,如果想不通过类而直接访问变量或方法的话,就必须将这些变量或方法定义为static。