今天又被靜態變量坑了,特寫此文,幾年前被批的經歷都忘啦

 類的成員變量有兩種:一種是被static關鍵字修飾的變量,叫類變量或靜態變量,一種是沒有被static修飾的,叫作實例變量 
    靜態變量和實例變量的區別在於: 
    類靜態變量在內存中只有一個,java虛擬機在加載類的過程當中爲靜態變量分配內存,靜態變量位於方法區,被類的全部實例共享,靜態變量能夠經過類名直接訪問。靜態變量的生命週期取決於類的生命週期,當類被加載的時候,靜態變量被建立並分配內存空間,當類被卸載時,靜態變量被摧毀,並釋放所佔有的內存。 
    類的每個實例都有相應的實例變量,每建立一個類的實例,java虛擬機爲實例變量分配一次內存,實例變量位於堆區中,實例變量的生命週期取決於實例的生命週期,當建立實例時,爲實例變量背建立,並分配內存,當實例被銷燬時,實例 變量被銷燬,並釋放所佔有的內存空間。 
    假如成員變量時引用變量,該成員變量結束生命週期時,並不意味着它所引用對象也結束生命週期。變量的生命週期和對象的生命週期是不一樣的概念。java