1.java中main方法是程序的入口方法。main还是必须的两个修饰符是public和static.举例
A:public static void main(String args[])B:public static final void main(String args[])C:static public void main(String args[])D:static public synchronized void main(String args[])E:static public abstract void main(String args);
上面能够是入口main方法的仅仅有ABCD.
2.同一个java文件其中可能够有多个main方法举例
class T{ public static void main(String agrs[]){ System.out.println("T mian"); }}public class Test{ public static void main(String args[]){ System.out.println("Test main"); }}
执行结果:Test main
执行结果表明:仅仅有和文件名称同样的类里面的main方法才是程序的入口方法。即Test.java中仅仅有名为Test类中的main是程序的入口,同一时候一个java文件里能够有多个main方法。
3.在main方法前输出HelloWorld
public class Test{ static { System.out.println("hello world1"); } public static void main(String args[]){ System.out.println("hello world2"); }}
执行结果是:hello world1
hello world2
public class Test{ public static void main(String args[]){ System.out.println("hello world2"); } static { System.out.println("hello world1"); }}
这段程序和上面的程序输出结果一样。因此表明在程序执行时,静态块是在main方法之前被载入的,并且static块在程序中的位置无关。
4.java程序的初始化顺序
(1)静态对象(变量)优先于非静态对象(变量)初始化,静态对象(变量)仅仅初始化一次,非静态可能会初始化多次。、
(2)父类优先于子类进行初始化
(3)依照成员变量的定义顺序进行初始化
class B extends Object{ static{ System.out.println("static B"); } public B(){ System.out.println("constructor B"); }}class A extends B{ static{ System.out.println("static A"); } public A(){ System.out.println("constructor A"); }}public class Test{ public static void main(String args[]){ new A(); }}
运行结果:
static B
static A
constructor B
constructor A