public class Test {
static {
System.out.println("你好啊!");

}
}
执行结果:
---------- Java ----------
你好啊!
java.lang.NoSuchMethodError: main
Exception in thread "main" 
Output completed (0 sec consumed) - Normal Terminationpublic class Test {
static {
System.out.println("你好啊!");
                System.exit(0);

}
}

解决方案 »

  1.   

    程序一开始加载的时候,
    首先加载了静态的static的代码段的程序
    优先执行
      

  2.   

    1、首先类加载器加载.class文件。
    2、然后完成static初始化,如果有。
    3、为对象分配内存空间
    4、将分配的内存空间清零
    5、初始化类字段(数据成员)。按照定义的顺序依次初始化
    6、调用构造器的方法开始--->
    父类的静态代码--->
    子类的静态代码-->
    父类的非静态代码--->
    父类构造函数--->
    子类非静态代码--->
    子类构造函数--->完成
      

  3.   

    static在编译的过程中是直接加载入驱动的,所以static块可以在没有主函数的状况下执行,但在运行完static块之后就会立即抛出异常(因为程序没有主函数入口)!
      

  4.   

    不对,static代码段是类加载的时候被加载,但不执行。
      

  5.   

    静态初始化块,只加载一次。
    参考:http://www.iteye.com/topic/208187
      

  6.   

    静态初始化块,只加载一次。
    参考:http://www.iteye.com/topic/208187
      

  7.   

    类加载的时候会执行static块中的代码,,,
      

  8.   

    说两点啊:
        1、输出“你好啊!”是因为在开发工具中(如eclipse)执行程序时把类加载的jvm中(加载过程中就会执行system语句),然后找main方法;
        2、报错是因为每个java程序都必须有一个main方法(除非借助junit4之类的组件,内部还是需要入口方法的),这个是人家当初就这么设计的,没什么好说的。
      

  9.   

    这个让我想起来一个题目,你能用多少种方法打印hello world
      

  10.   


    main方法是执行入口,木有main,怎么运行?求指教
      

  11.   

    这程序就一个TEST类  public的 程序默认加载这个类 发现有static块  就加载 输出helloworld 然后发现没有main  出错了 
    静态初始化的发生是有条件的 即只有它所在的类被加载时才会发生
    LZ对这方面内容有兴趣 可以看thinking in java里的 静态数据初始化
      

  12.   

    System.out.println是异步的,它仅仅是一个请求,有可能你没有打印就退出系统了
      

  13.   

    所以加入System.exit(0);
    结束程序!
    ++
    java核心技术里有讲到,一下省略.......
      

  14.   

    System.exit(0);程序终止运行,异常自然也就不能抛出了!!!