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