透過class loader啟動放到記憶體
class 類別檔就好比是一個設計藍圖
藍圖內有static的method或者field都配置在Method area內
可以整個程式使用
物件(Object)則配置在Heap區
JVM stack則是放變數的起始位置
class test{//要先建立新物件後才能使用
void ln(){
System.out.println("Hello");
}
}
public class Imethod{
public static void main(String[] args){
test a=new test();
a.ln();
}class method
}
class test{//不需要建立物件就可以使用
static void ln(){
System.out.println("Hello");
}
}
public class Cmethod{
public static void main(String[] args){
test.ln();
}
}
class vclass {
static int a=100;
// class field
static void va(){
System.out.println(++a);
}
}
public class vinstance {
int a=100;
}
沒有寫在method內,也沒有static宣告,再JVM記憶體內配置在heap
class vlocal {
void z(){
int b;
// b 沒有設定初值, 這行單獨編譯是會成功
System.out.println(b);
// 編譯時出現 vlocal.java:4: variable b might not have been initialized
}
}
在method內宣告的變數,再JVM記憶體內配置在stack
在使用上,一定要有初值