Main方法不对任何对象进行操作,事实上,在启动程序时还没有任何一个对象。静态main方法将执行并创建程序所需要的对象。
提示:每一个类可以有一个main方法,这是一个常用与对类进行单元测试的技巧。例如:可以在Employee类中添加一个main方法。
public class StaticTest {
public static void main(String[] args) {
Employee[] staff=new Employee[3];
staff[0]=new Employee("Tom",40000);
staff[1]=new Employee("Dick",60000);
staff[2]=new Employee("Harry",50000);
for(Employee e:staff){
e.setId();
System.out.println("name="+e.getName()+",id="+e.getId()+",salary="+e.getSalary());
}
int n=Employee.getNextId();//打印下一个员工的id号来展示静态方法
System.out.println("下一个可用id号为:"+n);
}
}
class Employee{
public static int nextId=1;//定义一个静态域,这个类里面的所有实例共享一个nextId域,它属于类,不属于任何独立的对象
private String name;
private double salary;
private int id;
public Employee(String n,double s){
name=n;
salary=s;
id=0;
}
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
public int getId(){
return id;
}
public void setId(){
id=nextId;//设置下一个可用的id号
nextId++;
}
public static int getNextId(){
return nextId;//返回静态域
}
public static void main(String[] args){//单元测试
Employee e=new Employee("herry",50000);
System.out.println(e.getName()+" "+e.getSalary());
}
}
如果想要单独地测试Employee类,只需执行
Java Employee,运行结果为:
,运行了Employee中的main方法,而不是运行StaticTest类里面的main方法。
如果Employee类是一个更大类型应用程序的一个部分,就可以使用下面方法运行程序
Java Application,运行结果为:
,则此时Employee类中的main方法永远不会执行。