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;
         // 注释下面的语句编译可以通过
System.out.println(weight); }
 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);
 }
}

解决方案 »

  1.   

    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;
        //   注释下面的语句编译可以通过
       System.out.println(weight);
     }
     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);
     }
    }
      

  2.   

    {
       System.out.println("non-static initial block");
        //   这边为什么不报向前引用的错误 
       weight = 2.0;
        //   注释下面的语句编译可以通过
       System.out.println(weight);
     }这个什么意思 直接在{} 写,是什么语法
      

  3.   

    这是JAVA代码块
    http://blog.csdn.net/lichaohn/article/details/5359240