1. 程式人生 > >static的生命週期,以及使用範圍

static的生命週期,以及使用範圍

全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。 當類首次被載入時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();
 }
}