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