Java簡(jiǎn)介
Java的兩種核心機(jī)制
Java虛擬機(jī)(Java Virtual Machine)
實(shí)現(xiàn)Java的跨平臺(tái)倍谜,每個(gè)操作系統(tǒng)上都有對(duì)應(yīng)的解釋器。源程序通過(guò)編譯器變成字節(jié)碼叉抡,然后通過(guò)JVM執(zhí)行尔崔。JVM可以理解成一個(gè)以字節(jié)碼為機(jī)器指令的CPU。JVM機(jī)制屏蔽了底層運(yùn)行平臺(tái)的差別褥民,實(shí)現(xiàn)了“一個(gè)編譯季春,隨處運(yùn)行”。
垃圾收集機(jī)制(Garbage Collection)
因?yàn)檫@個(gè)機(jī)制的存在消返,程序員不再需要關(guān)心內(nèi)存回收的問(wèn)題载弄。垃圾收集在Java程序運(yùn)行過(guò)程中自動(dòng)進(jìn)行,程序員無(wú)法精確控制和干預(yù)侦副。
程序執(zhí)行過(guò)程
- Load到內(nèi)存區(qū)
- 找到main方法開始執(zhí)行
- 執(zhí)行過(guò)程中的內(nèi)存管理
存在硬盤中的程序代碼通過(guò)編譯(Javac)成字節(jié)碼侦锯,之后運(yùn)行(Java)。運(yùn)行開始后代碼被下載到內(nèi)存區(qū)秦驯,從main方法開始執(zhí)行尺碰。內(nèi)存代碼存放在code segment,靜態(tài)變量和字符串常量存放在data segment,局部變量存放在stack,new出來(lái)的東西存放在heap中。
Java變量的分類
- 局部變量:方法或語(yǔ)句塊內(nèi)部定義變量
- 成員變量:方法外部译隘、類的內(nèi)部定義的變量
Java方法
【修飾符1 修飾符2 ...】返回值類型 方法名(形式參數(shù)列表){
Java語(yǔ)句亲桥;... ...
}
- 形式參數(shù):在方法被調(diào)用時(shí)用于接收外界輸入的數(shù)據(jù)。
- 實(shí)參:調(diào)用方法時(shí)實(shí)際傳給方法的數(shù)據(jù)固耘。
- 返回值:方法在執(zhí)行過(guò)程完畢后返回給調(diào)用它的環(huán)境的數(shù)據(jù)题篷。
- 返回值類型:事先約定的返回值的數(shù)據(jù)類型,如無(wú)返回值厅目,必須給出返回值類型void番枚。
對(duì)象和類的概念
對(duì)象用計(jì)算機(jī)語(yǔ)言對(duì)問(wèn)題域中的失誤的描述法严,對(duì)象通過(guò)“屬性(attribute)”和“方法(method)”來(lái)分別對(duì)應(yīng)事物所具有的靜態(tài)屬性和動(dòng)態(tài)屬性。
類是用于描述同一類的對(duì)象的一個(gè)抽象的概念葫笼,類中定義了這一類對(duì)象所具有的靜態(tài)和動(dòng)態(tài)屬性深啤。
類可以看成一類對(duì)象的模板,對(duì)象可以看成類的一個(gè)具體實(shí)例路星。
類(對(duì)象)之間的關(guān)系
- 關(guān)聯(lián)關(guān)系
舉個(gè)例子:一個(gè)學(xué)院有教授和研究生溯街,教授和研究生分別是一個(gè)類⊙筘ぃ“教授”這個(gè)類中有一個(gè)方法“教課”呈昔,“研究生”這個(gè)類中有一個(gè)對(duì)象“研究生A”,對(duì)“研究生A”使用“教課”這個(gè)方法就是關(guān)聯(lián)關(guān)系友绝。 - 繼承關(guān)系
如果可以用“XX是一種XX”這么一個(gè)語(yǔ)句來(lái)表述的話堤尾,基本就是繼承關(guān)系了。這個(gè)是“一般和特殊”的關(guān)系九榔。比如:游泳運(yùn)動(dòng)員是運(yùn)動(dòng)員哀峻。 - 聚合關(guān)系(整體和部分)
舉個(gè)例子:球隊(duì)涡相、隊(duì)長(zhǎng)哲泊、隊(duì)員。隊(duì)長(zhǎng)和隊(duì)員組成了球隊(duì)催蝗。(聚集) 另一個(gè)例子:person切威、limb、head丙号、body.limb先朦、head、body組成了person(組合) - 實(shí)現(xiàn)關(guān)系
- 多態(tài)