为什么编译时会出非法向前引用的错误
class   Cat{ 
    public   String   name; 
    public   int   age;      
    public   Cat(String   name,int   age){      
       System.out.println( "Constructor "); 
       this.name   =   name; 
       this.age   =   age; 
    }      
 { 
       System.out.println( "non-static   initial   block "); 
          //   这边为什么不报向前引用的错误 
          weight   =   2.0; 
                            //   注释下面的语句编译可以通过 
 	[color=#FF0000]System.out.println(weight);[/color]   } 
    double   weight   =2.3   ; 
    public   String   toString(){ 
       return    "Cat[name= "   +   name   + "   ,age=    "   +   age      + "   ,weight=    "   +   weight; 
    } 
 }     
 public   class   InitTest{ 
    public   static   void   main(String[]   args){ 
       Cat   cat   =   new   Cat( "kitty ",2); 
       System.out.println(cat); 
       Cat   c2   =   new   Cat( "Jefi ",3); 
       System.out.println(c2); 
    } 
 } 
------解决方案--------------------
这是JAVA代码块
http://blog.csdn.net/lichaohn/article/details/5359240