Java中的Static静态方法

与静态变量相似,用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

上一篇:SQL优化之高效SQL语句


下一篇:☕【Java深层系列】「并发编程系列」让我们一起探索一下CountDownLatch的技术原理和源码分析