每一个学习高级语言编程的人学习的第一个程序大概都是HelloWorld,其代码如下:
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello,World!");
}
}
但是我们能不能够不使用main方法,也打印出Hello,World!呢?答案是肯定的!请看下面一段代码:
public class HelloWorld {
static
{
System.out.println("Hello,World!");
}
}
在命令行进入存放HelloWorld.java文件的目录,然后输入
javac HelloWorld.java
java HelloWorld
结果如下:
Hello,World!
Exception in thread "main" java.lang.NoSuchMethodError: main
Hello,World! 打印出来了,但是系统给出了那个可恶的main没有定义的错误消息。怎么避免这条消息呢?请看
下面一段代码:
public class Hello {
static
{
System.out.println("Hello,World!");
System.exit(0);
}
}
这样就OK了。
为什么没有入口方法main()也能够执行下面这句呢?
System.out.println("Hello,World!");
其实原因很简单。
因为java类静态块中的语句在java虚拟机装载类的时候就执行了,并不需要实例化对象。
为什么没有抛出错误呢?
因为在错误没来得及抛出时,程序执行了System.exit(0)退出了。