java基礎(chǔ)語(yǔ)法
java的基礎(chǔ)概念與常識(shí)
Java語(yǔ)言的特點(diǎn)
1.Java充分吸收了c++語(yǔ)言的優(yōu)點(diǎn),去掉了c語(yǔ)言中的指針、內(nèi)存申請(qǐng)、釋放內(nèi)存等影響程序健壯性的部分,是面向?qū)ο蟮牡木幊陶Z(yǔ)言,
2.Java語(yǔ)言具有以下特點(diǎn):
- 簡(jiǎn)單并面向?qū)ο螅ǚ庋b、繼承、多態(tài))
- 平臺(tái)無(wú)關(guān)性(java系統(tǒng)具有可移植性)
- 安全性
- 魯棒性
- 高性能
- 多線程
- 編譯與解釋并存
3.Java的工作原理
java虛擬機(jī)可以安全且兼容的執(zhí)行保存在(.class)字節(jié)碼文件中的字節(jié)碼。Java的跨平臺(tái)主要是指字節(jié)碼文件可以在任何具有JVM的計(jì)算機(jī)或電子設(shè)備上運(yùn)行。
Java源文件需要通過(guò)編譯器(javac)編譯成字節(jié)碼文件,而后通過(guò)解釋器解釋成特定的機(jī)器碼運(yùn)行。
4.Java概念
- 類:
- 對(duì)象:
- 接口:
5.Java程序流程
- 編寫(xiě)源程序
- 編譯源程序
- 運(yùn)行程序
6.Java SE vs Java EE
Java SE(Java Platform,Standard Edition):Java 平臺(tái)標(biāo)準(zhǔn)版,Java 編程語(yǔ)言的基礎(chǔ),它包含了支持 Java 應(yīng)用程序開(kāi)發(fā)和運(yùn)行的核心類庫(kù)以及虛擬機(jī)等核心組件。Java SE 可以用于構(gòu)建桌面應(yīng)用程序或簡(jiǎn)單的服務(wù)器應(yīng)用程序。
Java EE(Java Platform, Enterprise Edition ):Java 平臺(tái)企業(yè)版,建立在 Java SE 的基礎(chǔ)上,包含了支持企業(yè)級(jí)應(yīng)用程序開(kāi)發(fā)和部署的標(biāo)準(zhǔn)和規(guī)范(比如 Servlet、JSP、EJB、JDBC、JPA、JTA、JavaMail、JMS)。 Java EE 可以用于構(gòu)建分布式、可移植、健壯、可伸縮和安全的服務(wù)端 Java 應(yīng)用程序,例如 Web 應(yīng)用程序。
7.JVM vs JDK vs JRE
JVM:運(yùn)行 Java字節(jié)碼的虛擬機(jī)。
JVM 并不是只有一種!只要滿足 JVM 規(guī)范,每個(gè)公司、組織或者個(gè)人都可以開(kāi)發(fā)自己的專屬 JVM。
JRE:Java運(yùn)行時(shí)環(huán)境
運(yùn)行已編譯的Java程序所需的內(nèi)容的集合,包括JVM,Java基礎(chǔ)類庫(kù)。
JDK:Java 開(kāi)發(fā)工具
功能齊全,是提供給開(kāi)發(fā)者使用,能夠創(chuàng)建和編譯 Java 程序的開(kāi)發(fā)套件。JDK包含JRE、編譯器javac、文檔注釋工具javadoc、基于JMX的可視化監(jiān)控工具jconsole、反編譯工具javap等等。
面試問(wèn)題羅列:
什么是字節(jié)碼?采用字節(jié)碼的好處是什么?
字節(jié)碼可以在有JVM的計(jì)算器或電子設(shè)備上運(yùn)行,采用字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語(yǔ)言執(zhí)行效率低的問(wèn)腿,同時(shí)又保留了解釋性語(yǔ)言的可移植性。
Java 程序運(yùn)行時(shí)相對(duì)來(lái)說(shuō)還是高效的(不過(guò),和 C、 C++,Rust,Go 等語(yǔ)言還是有一定差距的),而且,由于字節(jié)碼并不針對(duì)一種特定的機(jī)器,因此,Java 程序無(wú)須重新編譯便可在多種不同操作系統(tǒng)的計(jì)算機(jī)上運(yùn)行。
Java 程序從源代碼到運(yùn)行的過(guò)程如下圖所示:Java程序轉(zhuǎn)變?yōu)闄C(jī)器代碼的過(guò)程
我們需要格外注意的是 .class->機(jī)器碼 這一步。在這一步 JVM 類加載器首先加載字節(jié)碼文件,然后通過(guò)解釋器逐行解釋執(zhí)行,這種方式的執(zhí)行速度會(huì)相對(duì)比較慢。而且,有些方法和代碼塊是經(jīng)常需要被調(diào)用的(也就是所謂的熱點(diǎn)代碼),所以后面引進(jìn)了 JIT(Just in Time xCompilation) 編譯器,而 JIT 屬于運(yùn)行時(shí)編譯。當(dāng) JIT 編譯器完成第一次編譯后,其會(huì)將字節(jié)碼對(duì)應(yīng)的機(jī)器碼保存下來(lái),下次可以直接使用。而我們知道,機(jī)器碼的運(yùn)行效率肯定是高于 Java 解釋器的。這也解釋了我們?yōu)槭裁唇?jīng)常會(huì)說(shuō) Java 是編譯與解釋共存的語(yǔ)言 。
Java程序轉(zhuǎn)變?yōu)闄C(jī)器代碼的過(guò)程

