Java三大版本&JDK、JRE、JVM
Java三大版本
Write Once、Run Anywhere(一次編寫,隨處運行)
- JavaSE:標(biāo)準(zhǔn)版(桌面程序、控制臺開發(fā)......),Java的基礎(chǔ)與核心,也是JavaEE和JavaME技術(shù)的基礎(chǔ)。
- JavaME:嵌入式開發(fā)(手機(jī)、小家電......),應(yīng)用范圍較小
- JavaEE:E企業(yè)級開發(fā)(web端、服務(wù)器開發(fā)......),是Java技術(shù)應(yīng)用最廣泛的領(lǐng)域,JavaSE是JavaEE的基礎(chǔ)。
JDK、JRE、JVM之間的關(guān)系
關(guān)系:JDK包含JRE,JRE包含JVM
- JDK(Java Development Kit):Java開發(fā)工具包,用于Java程序的開發(fā)。
- JRE(Java Runtime Environment):Java運行時環(huán)境,只能運行.class文件,不能編譯。
- JVM(Java Virtual Machine):Java虛擬機(jī),Java運行時環(huán)境。
一、JDK
JDK(Java Development Kit),Java開發(fā)工具包,用于Java程序的開發(fā),針對開發(fā)者。
JDK是整個Java的核心,包括了Java運行環(huán)境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基本的類庫(即Java API包括rt.jar)。
JavaAPI是Java的應(yīng)用程序接口,里面有很多已經(jīng)寫好的Java Class,包括一些重要的語言結(jié)構(gòu)以及基本圖形,網(wǎng)絡(luò)和文件I/O等等,我們可以直接調(diào)用使用。
二、JRE
JRE(Java Runtime Environment),Java運行時環(huán)境,只能運行.class文件,不能編譯,針對用戶。JRE,包含了一個JVM(Java虛擬機(jī)),與Java核心類庫與其所支持的文件。與JDK不同,它不包含開發(fā)工具——編譯器、調(diào)試器和其它工具。
將Java源程序(擴(kuò)展名為.java的文件)
JRE,是運行Java程序必不可少的,編寫好的Java程序必須要JRE才能運行,如果想運行一個開發(fā)好的Java程序,計算機(jī)中只需要安裝JRE即可。
包含關(guān)系:
JDK—>JRE、JAVA基礎(chǔ)類庫
JRE—>JVM、Java核心類庫
三、JVM
JVM(Java Virtual Machine),Java虛擬機(jī),Java運行時環(huán)境。
Java虛擬機(jī),是一種虛擬出來的計算機(jī),是通過在實際的計算機(jī)上模擬仿真各種計算機(jī)功能實現(xiàn)的。
JVM功能:將字節(jié)碼文件(擴(kuò)展名為.class的文件)解釋成具體系統(tǒng)平臺的機(jī)器指令。
JVM,是整個Java實現(xiàn)跨平臺的最核心的部分,所有的Java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機(jī)上執(zhí)行,也就是說class并不直接與機(jī)器的操作系統(tǒng)相對應(yīng),而是經(jīng)過虛擬機(jī)間接與操作系統(tǒng)交互,由虛擬機(jī)將程序解釋給本地系統(tǒng)執(zhí)行。
每日三道Java面試題
1.Java有哪幾種基本數(shù)據(jù)類型?
Java有4類8種數(shù)據(jù)類型,它們分別是
1.整形:byte、short、int、long
2.浮點型:float、double
3.字符型:char
4.布爾型:boolean
2.==和equals比較有什么區(qū)別?
==:
如果比較的對象是基本數(shù)據(jù)類型,則比較的是數(shù)值是否一致;
如果比較的是引用數(shù)據(jù)類型,則比較的是對象的地址是否一致。
equals():
equals()默認(rèn)用來比較對象的地址是是否一致,不能用于比較基本數(shù)據(jù)類型,如果對象和自身進(jìn)行比較,則equals()方法與==的作用是一樣的。
那為什么常用equals()來比較String字符串的內(nèi)容相等是為什么呢?
那是因為對于String、Date、Integer等類型重寫了equals方法,使其比較的是存儲對象的內(nèi)容是否相等,而不是內(nèi)存地址。
如String類,已經(jīng)重寫了equals方法:
3.Java支持xx ≠ null 不等于寫法嗎?
不支持,正常的不等于寫法是:!=
?本文轉(zhuǎn)載自微信公眾號「崔九八」,作者「崔九八」,可以通過以下二維碼關(guān)注。
轉(zhuǎn)載本文請聯(lián)系「崔九八」公眾號。