本帖最后由 Feynmann 于 2009-09-09 00:08:22 编辑

解决方案 »

  1.   

    类加载时候,先加载静态变量,再初始化成员变量  
    i不是静态变量,静态方法main()不能访问非静态变量
    Date是util包中的一个类  不是类的修饰符  不存在静态之说
    new Date() new出一个时间对象的引用  
       我也只能这么解释了``俺也只是个新手
      

  2.   

    静态方法往往不用实例化就可以访问,所以它要求它所使用的方法和属性必须同样是静态才行,如果要使用非静态的就必须先实例化。当然在方法体内部就没有静态与非静态之说了.像new Date();因为在方法体内部申明的所以与静态还是非静态无关。public class test{ 
      class test{ 
        int i; 
        char c; 
      } 
      public static void main(String[] args){ 
        System.out.println(new test());  
      } 
    } 这为什么编译失败?因为println()中的new test()是内部类,必且是类范围里的,你可以把这看作是一个类的属性,显然静态方法无法访问非静态的,必须有一个外部类的引用才能访问,所以在new test()时还要有个外部类的实例。形如:外部内实例.new test();
    public class test{ 
        public static void main(String[] args){ 
        class test1{ 
        int i; 
        char c; 
      }     System.out.println(new test1());  
      } 
    } 这个为什么可以编译成功?你同样可以把在这儿定义的类看成定义的一个变量,显然在方法内部可以对它进行任意的访问,不管它是什么修饰符。
    import java.util.*; 
    public class test{ 
        public static void main(String[] args){ 
          System.out.println(new Date());  
    } System.out.println(new Date());  
    你可以看成是 Date d  = new Date()
    System.out.println(d);
    因为它是方法自己申明的,当然没有问题的。方法在初始化时可以对其进行初始化。
      

  3.   

    如果你是初学者,最好不要从Thinking In Java这本书,从一些基础些的书籍开始。
    你遇到的问题,可能Thinking In Java没有很充分的回答,它不是基础书籍。
    static ,inner class,instance object 这些关键字或概念就很容易理解你遇到的这几个问题了。