按照惯例先用Java写一个"hello world" 程序
public class HelloWrold {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
main()方法的定义:
main()
方法是Java应用程序的入口方法,也就是程序运行时的第一个方法。声明为:public static void main()
。
为何main()方法是静态的(static)
- 正因为main方法是静态的,JVM调用这个方法就不需要创建任何包含这个main方法的实例。
- 因为C和C++同样有类似的main方法作为程序执行的入口。
- 如果main方法不声明为静态的,JVM就必须创建main类的实例,因为构造器可以被重载,JVM就没法确定调用哪个main方法。
- 静态方法和静态数据加载到内存就可以直接调用而不需要像实例方法一样创建实例后才能调用。由于JVM在运行这个Java应用程序的时候,首先会调用main()方法,调用时不实例化这个类的对象,而是通过类名直接调用。那么它就会被加载到JVM上下文中成为可执行的方法。
为何main()方法是公有的(public)
Java指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为public,Java可以从该类之外的地方访问。因为main方法是公共的,JVM就可以轻松的访问执行它。
为何main()方法没有返回值(void)
因为main返回任何值对程序都没任何意义,所以设计成void,意味着main不会有任何值返回
String[] args 参数
main()
方法中必须有一个入参,必须是字符串数组(String[]),这个是java的规范。至于字符串数组的名字,是可以随便取的。但根据习惯,这个字符串数组的名字一般和SUN Java规范范例中main参数名保持一致,取名为args。
println()方法输出
因为Java不允许独立于类外的方法存在,所以在命名空间内不存在直接的类函数调用。
System是java.lang
中的一个类。 System.out
中的out代表了System类中的静态对象PrintStream
,println()
是PrintStream
中的方法。
Note
- main方法必须声明为public、static、void,否则JVM没法运行程序
- 如果JVM找不到main方法就抛出
NoSuchMethodError:main
异常,例如:如果你运行命令:java HelloWrold
,JVM就会在HelloWorld.class
文件中搜索public static void main(String[] args)
方法 - main方式是程序的入口,程序执行的开始处。
- main方法被一个特定的线程”main”运行,程序会一直运行直到main线程结束或者non-daemon线程终止。
- 当你看到
Exception in Thread main
如:Excpetion in Thread main:Java.lang.NullPointedException
,意味着异常来自于main线程 - 你可以声明main方法使用java1.5的可变参数的方式如:
public static void main(String... args)
- 除了static、void、和public,你可以使用final,synchronized、和strictfp修饰符在main方法的签名中,如:
public strictfp final synchronized static void main(String[] args)
- main方法在Java可以像其他方法一样被重载,但是JVM只会调用上面这种签名规范的main方法。
- 你可以使用throws子句在方法签名中,可以抛出任何checked和unchecked异常
- 静态初始化块在JVM调用main方法前被执行,它们在类被JVM加载到内存的时候就被执行了。
转载至:http://www.testclass.net/java
转载至:http://www.cnblogs.com/numen-fan/