1:首先在語法定義上區別:靜態變量前面要加static,實例變量不用
2:在程序運行時:
實例變量輸入對象的屬性,必須創建了實例對象(如 new)才會被分配空間,才可以使用實例變量,靜態變量不屬於某個實例對象,而是屬於類,也叫類變量,只要程序加載了類的字節碼,不用創建任何實例對象就會被分配空間,就可以被使用
3:總之,實例變量必須創建對象后才可以通過這個對象來使用,靜態變量則可以直接使用類名來引用。
注意:(static)靜態變量的使用也是有局限性的,一個靜態方法中不能調用類中的非靜態的方法和變量,static修飾的變量在類加載后在內存中只有一份內存空間,可以被一個類的所有實例對象所共享,如:總庫100張票,4個窗口賣火車票,賣的都是總庫里的票,無論是哪個窗口賣掉的票,總票都會減一。
public class BainLiang { public static void main(String[] args) { // TODO Auto-generated method stub //直接調用測試: System.out.println(QuBie.staticInt); // System.out.println(QuBie.shiInt);//報錯 QuBie qb1 = new QuBie(); QuBie qb2 = new QuBie(); qb1.shiInt = 8; qb1.staticInt = 8;//這里改變以后,再創建的對象也是會用改過的數值 QuBie qb3 = new QuBie(); } } class QuBie { public static int staticInt = 0; public int shiInt = 0; public QuBie() { staticInt++; shiInt++; System.out.println("靜態變量" + staticInt + " 實例變量" + shiInt); } }
靜態變量 這種寫法在生活中非常使用,如買火車票,一共100張,有4個窗口在賣,也就是說一定要公用一個資源,也就是要定義成static。
Java設計模式總匯
(適配器、單例、靜態代理、簡單工廠設計模式)https://www.cnblogs.com/cmusketeer/p/8146510.html