与静态变量相似,用static修饰符修饰的方法属于类的静态方法,又称为类方法。静态方法的实质是属于整个类的方法,而不加static修饰的方法是属于某个具体对象的方法。
一个方法生声明为static有以下几重含义:
- 非static的方法是属于某个对象的方法,在创建这个对象时,对象的方法在内存中拥有属于自己的代码段。而static的方法是属于整个类的方法,它在内存中的代码段被所有的对象所拥有,而不被任何一个对象所专有。
- 由于static方法是属于整个类的方法,故不能直接操作和处理属于某个对象的成员,而只能处理整个类的成员,即static方法只能访问static成员变量或调用static成员方法。。
- 在静态方法中不能使用this或super关键字,因为this代表调用该方法的对象,但现在静态方法不需要对象来调用,
- 调用静态方法时,可以使用类名称来调用,或使用某一个具体对象名来调用;格式如下=======(1)类名称.静态方法名();(2)对象名.静态方法名();
示例如下:利用圆柱体类Cylinder来介绍静态方法的使用
定义一个Cylinder类
public class Cylinder {
private static int num=0;
private static double PI=3.14;
private double r;
private int height;
public Cylinder() {
}
public Cylinder(double r, int height) {
this.r = r;
this.height = height;
num++;//当构造方法Cylinder()被调用时,num加1;
}
public static void count(){ //声明count()为静态方法
System.out.println("创建了"+num+"个对象");
}
public double area(){
return PI*r*r;
}
public double volume(){
return area()*height;
}
}
主方法CylinderMain
public class CylinderMain {
public static void main(String[] args) {
Cylinder.count();//在创建对象之前用类名count()调用count()方法
Cylinder c1 = new Cylinder(2.5, 3);
c1.count(); //用对象c调用静态count方法
System.out.println("圆柱1的体积:" + c1.volume());
Cylinder c2 = new Cylinder(2, 5);
Cylinder.count();
System.out.println("圆柱2的体积:" + c2.volume());
}
}
结果:
创建了0个对象
创建了1个对象
圆柱1的体积:58.875
创建了2个对象
圆柱2的体积:62.800000000000004