Java静态域与静态方法
静态域:
如果将域定义为static,每个类只有一个这样的域。而每一个对象对于所有的实例域都有自己的一份拷贝。例如,假定需要给每一个雇员赋予唯一标识码。给Employee类添加一个实例域id和静态域nextId。
class Employee{
private static int nextId = 1;
private int id;
}
现在,每一个雇员对象都有一个自己的id域,但是这个类所有的实例共享一个neatid域。换句话说,1000个类的对象,有10000个实例域id,但是只有一个静态域nextId。即使没有一个雇员对象,静态域neatid也存在。属于这个类,不属于任何独立对象。
静态常量:
静态变量使用的很少,但是静态常量使用很多。
如果关键字static被省略的话,PI就变成了Math类的一个实例域。需要通过Math类的对象访问PI
,并且每一个Math对象都有自己的一份PI拷贝。
静态方法:
静态方法是一种不能向对象实施操作的方法。
可以认为静态方法是没有this参数的方法(在一个非静态的方法中,this参数表示这个方法的隐式参数)。
因为静态方法不能操作对象,所以不能在静态方法中访问实例域。但是,静态方法可以访问自身中的静态域。
这个方法可以省略关键字static吗?是可以的。但是需要相应的类对象的引用调用这个方法。
main方法:
需要注意,不要使用对象调用静态方法。例如不需要构造Math类对象就可以调用Math.pow。
同理,main方法也是一个静态方法。
main方法不对任何对象进行操作。事实上,在启动程序时还没有任何一个对象。静态的main方法将执行并创建程序所需要的对象;
如果想要独立地测试Employee类,只要执行java Employee