2012年12月16日 星期日

變數的類型(Field)

基本上分三類
Class Field (Static)
class vclass {
  static int a=100;
// class field
  static void va(){
     System.out.println(++a);
  }
}

不在method內,前面有static宣告,置於method area
classfield可以被整個運作中的java程式使用,所以又稱為全域變數
再使用上也可以不用給初值

Instance Field (Heap)
public class vinstance {
    int a=100; 
}
 
沒有寫在method內,也沒有static宣告,再JVM記憶體內配置在heap
有效的範圍只在整個class內

Local Field (Stack)  
class vlocal {
  void z(){
     int  b; 
// b 沒有設定初值, 這行單獨編譯是會成功
     System.out.println(b); 
// 編譯時出現 vlocal.java:4: variable b might not have been initialized
  }
}
 
在method內宣告的變數,再JVM記憶體內配置在stack 
在使用上,一定要有初值
而且不能有static宣告

沒有留言:

張貼留言