别回答的太肤浅、

解决方案 »

  1.   

    如果回答:Java语言规范规定如此。你满意么?类的静态属性和方法,跟普通的成员属性和方法,其最终的区别就在于前者是伴随着类定义的装载就完成初始化并提供直接访问了。
    或者反过来问:如果连用类名都无法访问类的静态属性和方法,那还能有什么招数去访问呢?
      

  2.   

    只有类中的静态方法和类变量才可以被访问,因为静态的方法或者变量不依赖类变量的存在而存在,这就是为什么程序入口是 public static void main()
      

  3.   

    我也只能说,这是sun规定的。
    如果用底层来分析,还真不好说。底层只能说是reflect
      

  4.   

    关于类名直接访问方法或属性,这是由于该方法或属性是静态的(即用static关键字定义),用static关键字定义的方法或属性在程序运行时候是在java的全局变量区。这就意味着他可以在类对象产生前就已经初始化了。所以可以直接使用。然而非static关键字定义的方法和属性,只有在创建该类的对象时候才会分配空间因而不能直接用类名调用。
      

  5.   

    当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存;修饰一个程序块的时候(也就是直接将代码写在static{...}中)时候,虚拟机就会优先加载静态块中代码,这主要用于系统初始化;当修饰一个类方法时候你就可以直接通过类来调用而不需要新建对象。