Java_靜態變量

class c1c {
    private static int num = 0;
    private static double pi = 3.14;
    private double radius;
    private int height;
    public c1c(double r,int h)
    {
        radius = r;
        height=h;
        num++;
    }
    public void count()
    {
        System.out.print("建立了"+num+"個對象");
    }
    double area() {
        return pi*radius*radius;
    }
    double volume() {
        return area()*height;
    }
}
public class cc{
    public static void main(String[] args)
    {
        c1c volu1=new c1c(2.5,5);
        volu1.count();
        System.out.println("圓柱1的體積="+volu1.volume());
        c1c volu2=new c1c(1.0,2);
        volu2.count();
        System.out.println("圓柱2的體積="+volu2.volume());
    }
}

  本例中聲明瞭一個靜態變量num用於記錄程序中共產生了多少個對象。spa

  由於對象建立時會自動調用構造方法,因此在構造方法中加入了「num++;」語句,這樣每建立一個對象就調用一次構造方法,從而每產生一個對象,num的值就會自動加1 。code

  此時,由於靜態變量是一個公共的存儲單元,因此類的任何一個對象去修改它時,都是在對同一個內存單元作操做。對象

去掉聲明num的static後blog

private int num = 0;

能夠看到num的值沒有變化,這是由於num成爲實例變量後,對建立的不一樣對象來講,都有本身獨立的內存來保存它的值,且不與其餘對象共享,所以若修改了volu1的num值,volu2的num並不受影響。內存

相關文章
相關標籤/搜索