有一個Cat類java
public class Cat {
String name;
String color;
}
複製代碼
建立一個Cat類的實例對象linux
Cat c = new Cat()
複製代碼
而後執行程序員
javac Cat.java
java Cat
複製代碼
簡單來講 大體流程以下圖數據庫
有人用編輯器打開.class文件看過嗎?網絡
好比Cat.java
類 數據結構
Cat.class
後,以十六進制展現成這個鬼樣子
咱們都知道計算機世界中是隻認識0和1的, 因此.java文件是給人類看的,而.class文件是給計算機看的jvm
類的加載指的是將類的.class
文件中的二進制數據讀入到內存
中,將其放在運行時數據區
的方法區
內,而後在堆區建立一個java.lang.Class
對象,用來封裝類在方法區內的數據結構。類的加載的最終產品是位於堆區中的Class對象
,Class對象封裝了類在方法區內的數據結構,而且向Java程序員提供了訪問方法區內的數據結構的接口。編輯器
Class classCat = c.getClass();
複製代碼
Class對象
,全限定類名爲java.lang.Class
,它是由JVM自動構造的, 也能夠理解爲類加載後的最終產物
信息
Arrays.stream(classCat.getMethods()).forEach(System.out::println);
複製代碼
Arrays.stream(classCat.getDeclaredFields()).forEach(System.out::println);
複製代碼
一個類,當它第一次
被使用時,會被加載到jvm的方法區
中函數