注意{System.out.println("test 1");}
在{}里面
public class A
{
    {
         System.out.println("test 1");
     }
    public A()
    {
        System.out.println("test 2");
     }
    // add
    public static void main(String arg[]){
        new A();
    }
}
试一下吧,我现在没有jdk。

解决方案 »

  1.   

    {
             System.out.println("test 1");
         }
    这段程序默认为static。正常来写,应该是:
        static {
             System.out.println("test 1");
         }和所有static变量/方法一样,这段程序在类第一次被加载时运行。
      

  2.   

    这个方法同static方法是不同的,论坛里应该有这方面的回答,很详细的。
    这再里再说一次。
    static{}块中的内容是在编译的时候就加载的,不论类创建了几个实例,只会执行一次。
    而{}块的内容则是在类创建的实例的时候就会执行,每创建一个实例就会执行一次。看下面的代码对你会有帮助。
    class A {
       public A() {
          System.out.println("AAA");
       }
       {
          System.out.println("456");
       }
    }public class B extends A {
       B() {
          this(12);
          System.out.println("BBB");
       }
       B(int x) {
          System.out.println("CCC");
       }
       {
          System.out.println("123");
       }
       public static void main(String[] args) {
          new B();
       }
    }The output is: 
    456
    AAA
    123
    CCC
    BBB
      

  3.   

    能通过
    因为语法无错误
    字符界面下运行应该没有输出
    因为没有MAIN()
    用别的调用应该输出:
    test 1
    test 2