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宣告
沒有留言:
張貼留言