1、class文件
【概念】能夠被JVM識(shí)別,加載并執(zhí)行的文件格式。
【生成class文件】

通過IDE自動(dòng)幫我們build;
手動(dòng)通過javac去生成class文件;
通過Java命令去執(zhí)行class文件;
【class文件作用】記錄一個(gè)類文件的所有信息,記住是所有!
【class文件結(jié)構(gòu)】
一種是8字節(jié)的二進(jìn)制流文件;
各個(gè)數(shù)據(jù)按順序緊密的排列,無間隙(好處:減少class的體積,加載class文件時(shí),更快速);
每個(gè)類或接口都單獨(dú)占據(jù)一個(gè)class文件(好處:每個(gè)類或接口都可以獨(dú)自管理自己內(nèi)部的內(nèi)容,無需相互交叉);

1)access_flags

2)constant_pool

3)范例

【class文件弊端】
內(nèi)存占用大,不適合移動(dòng)端;堆棧的加載模式,加載速度慢;文件IO操作多,類查找慢;
2、dex文件
【概述】能夠被DVM識(shí)別,加載并執(zhí)行的文件格式。
【如何生成一個(gè)dex文件】
1)通過IDE自動(dòng)幫我們build生成; 配置dex環(huán)境變量;/sdk/build-tools/26.0.0/dx;
2)手動(dòng)通過dx命令去生成dex文件;
3)手動(dòng)運(yùn)行dex文件在手機(jī);

【dex文件作用】記錄整個(gè)工程中所有類文件的信息,記住是整個(gè)工程!
【dex文件結(jié)構(gòu)】
一種是8字節(jié)的二進(jìn)制流文件;
各個(gè)數(shù)據(jù)按順序緊密的排列,無間隙;
整個(gè)應(yīng)用中所有Java源文件都放在一個(gè)dex中;

3、class和dex對(duì)比
本質(zhì)上他們都是一樣的,dex是從class文件演變而來的;
class文件存在許多沉余,并整合;
