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並不受影響。內存