static的生命週期,以及使用範圍
阿新 • • 發佈:2019-02-13
全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。 當類首次被載入時static定義的變數被分配空間,程式結束後由系統釋放.如果在一個程式裡過多的使用static定義的成員,確實很佔記憶體,因為他的生命週期是整個程式,程式執行時無法被gc所回收,直到程式結束,釋放記憶體.
================================================================
首先,static的用法是:
1.static所修飾的方法和變數是屬於類本身,而不是屬於物件,無論建立多少個物件例項都是共用一個方法和變數.
2.靜態的方法不可以呼叫非靜態的方法,非靜態的方法可以呼叫靜態的方法.
其次,
在你的第一個程式中,main()是靜態的方法,它要呼叫yes_no()方法的話,yes_no方法就必須是靜態的,所以第一個要用static.
再次,
第二個方法是通過物件呼叫其內部的方法不算是main()方法直接呼叫printlnfo().所以不需要用static修飾.
不知道這樣回答你是否明白了
有兩段程式: public class basic{ public static void main(String[] args){ yes_no(2008); } public ###### void yes_no(int year){ if(year%4==0&&year%100!=0||year%400==0) System.out.print(year+"年是閏年。"); else System.out.print(year+"年不是閏年。"); } } ----------------------------------------------------------------- public class basic{ String name; int age; public basic(String name,int age){ this.name=name; this.age=age; } public static void printInfo(){ System.out.println(name+"已經有"+age+"歲了."); } public ###### void main(String[] args) { String name="Jim"; int age=19; basic temp = new basic(name,age); temp.printInfo(); } }