- 相關(guān)推薦
Java語(yǔ)言的基本特點(diǎn)
引導(dǎo)語(yǔ):Java是一門面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念。那么你們知道Java語(yǔ)言的特點(diǎn)嗎,以下是百分網(wǎng)小編分享給大家的Java語(yǔ)言的特點(diǎn),也詳細(xì)把Java語(yǔ)言與其他語(yǔ)言做了比較,更好地幫助大家了解Java。
Java語(yǔ)言的特點(diǎn)
1. 簡(jiǎn)單、面向?qū)ο蠛蜑槿怂煜?/strong>
java的簡(jiǎn)單首先體現(xiàn)在精簡(jiǎn)的系統(tǒng)上,力圖用最小的系統(tǒng)實(shí)現(xiàn)足夠多的功能;對(duì)硬件的要求不高,在小型的計(jì)算機(jī)上便可以良好的運(yùn)行。和所有的新一代的程序設(shè)計(jì)語(yǔ)言一樣,java也采用了面向?qū)ο蠹夹g(shù)并更加徹底,所有的java程序和applet程序均是對(duì)象,封裝性實(shí)現(xiàn)了模塊化和信息隱藏,繼承性實(shí)現(xiàn)了代碼的復(fù)用,用戶可以建立自己的類庫(kù)。而且java采用的是相對(duì)簡(jiǎn)單的面向?qū)ο蠹夹g(shù),去掉了運(yùn)算符重載、多繼承的復(fù)雜概念,而采用了單一繼承、類強(qiáng)制轉(zhuǎn)換、多線程、引用(非指針)等方式。無(wú)用內(nèi)存自動(dòng)回收機(jī)制也使得程序員不必費(fèi)心管理內(nèi)存,是程序設(shè)計(jì)更加簡(jiǎn)單,同時(shí)大大減少了出錯(cuò)的可能。java語(yǔ)言采用了C語(yǔ)言中的大部分語(yǔ)法,熟悉C語(yǔ)言的程序員會(huì)發(fā)現(xiàn)java語(yǔ)言在語(yǔ)法上與C語(yǔ)言極其相似。
2. 魯棒并且安全
java語(yǔ)言在編譯及運(yùn)行程序時(shí),都要進(jìn)行嚴(yán)格的檢查。作為一種強(qiáng)制類型語(yǔ)言,java在編譯和連接時(shí)都進(jìn)行大量的類型檢查,防止不匹配問(wèn)題的發(fā)生。如果引用一個(gè)非法類型、或執(zhí)行一個(gè)非法類型操作,java將在解釋時(shí)指出該錯(cuò)誤。在java程序中不能采用地址計(jì)算的方法通過(guò)指針訪問(wèn)內(nèi)存單元,大大減少了錯(cuò)誤發(fā)生的可能性;而且java的數(shù)組并非用指針實(shí)現(xiàn),這樣就可以在檢查中避免數(shù)組越界的發(fā)生。無(wú)用內(nèi)存自動(dòng)回收機(jī)制也增加了java的魯棒性。
作為網(wǎng)絡(luò)語(yǔ)言,java必須提供足夠的安全保障,并且要防止病毒的侵襲。java在運(yùn)行應(yīng)用程序時(shí),嚴(yán)格檢查其訪問(wèn)數(shù)據(jù)的權(quán)限,比如不允許網(wǎng)絡(luò)上的應(yīng)用程序修改本地的數(shù)據(jù)。下載到用戶計(jì)算機(jī)中的字節(jié)代碼在其被執(zhí)行前要經(jīng)過(guò)一個(gè)核實(shí)工具,一旦字節(jié)代碼被核實(shí),便由java解釋器來(lái)執(zhí)行,該解釋器通過(guò)阻止對(duì)內(nèi)存的直接訪問(wèn)來(lái)進(jìn)一步提高java的安全性。同時(shí)java極高的魯棒性也增強(qiáng)了java的安全性。
3. 結(jié)構(gòu)中立并且可以移植
網(wǎng)絡(luò)上充滿了各種不同類型的機(jī)器和操作系統(tǒng),為使java程序能在網(wǎng)絡(luò)的任何地方運(yùn)行,java編譯器編譯生成了與體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)碼結(jié)構(gòu)文件格式。任何種類的計(jì)算機(jī),只有在其處理器和操作系統(tǒng)上有java運(yùn)行時(shí)環(huán)境,字節(jié)碼文件就可以在該計(jì)算機(jī)上運(yùn)行。即使是在單一系統(tǒng)的計(jì)算機(jī)上,結(jié)構(gòu)中立也有非常大的作用。隨著處理器結(jié)構(gòu)的不斷發(fā)展變化,程序員不得不編寫各種版本的程序以在不同的處理器上運(yùn)行,這使得開發(fā)出能夠在所有平臺(tái)上工作的軟件集合是不可能的。而使用java將使同一版本的應(yīng)用程序可以運(yùn)行在所有的平臺(tái)上。
體系結(jié)構(gòu)的中立也使得java系統(tǒng)具有可移植性。java運(yùn)行時(shí)系統(tǒng)可以移植到不同的處理器和操作系統(tǒng)上,java的編譯器是由java語(yǔ)言實(shí)現(xiàn)的,解釋器是由java語(yǔ)言和標(biāo)準(zhǔn)C語(yǔ)言實(shí)現(xiàn)的,因此可以較為方便的進(jìn)行移植工作。
4. 高性能
雖然java是解釋執(zhí)行的,但它仍然具有非常高的性能,在一些特定的CPU上,java字節(jié)碼可以快速的轉(zhuǎn)換成為機(jī)器碼進(jìn)行執(zhí)行。而且java字節(jié)碼格式的設(shè)計(jì)就是針對(duì)機(jī)器碼的轉(zhuǎn)換,實(shí)際轉(zhuǎn)換時(shí)相當(dāng)簡(jiǎn)便,自動(dòng)的寄存器分配與編譯器對(duì)字節(jié)碼的一些優(yōu)化可使之生成高質(zhì)量的代碼。隨著java虛擬機(jī)的改進(jìn)和"即時(shí)編譯"(just in time)技術(shù)的出現(xiàn)使得java的執(zhí)行速度有了更大的提高。
5. 解釋執(zhí)行、多線程并且是動(dòng)態(tài)的
為易于實(shí)現(xiàn)跨平臺(tái)性,java設(shè)計(jì)成為解釋執(zhí)行,字節(jié)碼本身包含了許多編譯時(shí)生成的信息,使連接過(guò)程更加簡(jiǎn)單。而多線程使應(yīng)用程序可以同時(shí)進(jìn)行不同的操作,處理不同的事件。在多線程機(jī)制中,不同的線程處理不同的任務(wù),互不干涉,不會(huì)由于某一任務(wù)處于等待狀態(tài)而影響了其它任務(wù)的執(zhí)行,這樣就可以容易的實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時(shí)交互操作。java在執(zhí)行過(guò)程中,可以動(dòng)態(tài)的加載各種類庫(kù),這一特點(diǎn)使之非常適合于網(wǎng)絡(luò)運(yùn)行,同時(shí)也非常有利于軟件的開發(fā),即使是更新類庫(kù)也不必重新編譯使用這一類庫(kù)的應(yīng)用程序。
如果你了解C語(yǔ)言和C++語(yǔ)言,可以參考下列java與C/C++語(yǔ)言的比較,如果不了解C語(yǔ)言和C++語(yǔ)言,可以忽略本部分知識(shí)。
a. 全局變量
java程序不能定義程序的全局變量,而類中的公共、靜態(tài)變量就相當(dāng)于這個(gè)類的全局變量。這樣就使全局變量封裝在類中,保證了安全性,而在C/C++語(yǔ)言中,由于不加封裝的全局變量往往會(huì)由于使用不當(dāng)而造成系統(tǒng)的崩潰。
b. 條件轉(zhuǎn)移指令
C/C++語(yǔ)言中用goto語(yǔ)句實(shí)現(xiàn)無(wú)條件跳轉(zhuǎn),而java語(yǔ)言沒有g(shù)oto語(yǔ)言,通過(guò)例外處理語(yǔ)句try、catch、finally來(lái)取代之,提高了程序的可讀性,也增強(qiáng)了程序的魯棒性。
c. 指針
指針是C/C++語(yǔ)言中最靈活,但也是最容易出錯(cuò)的數(shù)據(jù)類型。用指針進(jìn)行內(nèi)存操作往往造成不可預(yù)知的錯(cuò)誤,而且,通過(guò)指針對(duì)內(nèi)存地址進(jìn)行顯示類型轉(zhuǎn)換后,可以類的私有成員,破壞了安全性。在java中,程序員不能進(jìn)行任何指針操作,同時(shí)java中的數(shù)組是通過(guò)類來(lái)實(shí)現(xiàn)的,很好的解決了數(shù)組越界這一C/C++語(yǔ)言中不做檢查的缺點(diǎn)。
d. 內(nèi)存管理
在C語(yǔ)言中,程序員使用庫(kù)函數(shù)malloc()和free()來(lái)分配和釋放內(nèi)存,C++語(yǔ)言中則是運(yùn)算符new和delete。再次釋放已經(jīng)釋放的內(nèi)存塊或者釋放未被分配的內(nèi)存塊,會(huì)造成系統(tǒng)的崩潰,而忘記釋放不再使用的內(nèi)存塊也會(huì)逐漸耗盡系統(tǒng)資源。在java中,所有的數(shù)據(jù)結(jié)構(gòu)都是對(duì)象,通過(guò)運(yùn)算符new分配內(nèi)存并得到對(duì)象的使用權(quán)。無(wú)用內(nèi)存回收機(jī)制保證了系統(tǒng)資源的完整,避免了內(nèi)存管理不周而引起的系統(tǒng)崩潰。
e. 數(shù)據(jù)類型的一致性
在C/C++語(yǔ)言中,不同的平臺(tái)上,編譯器對(duì)簡(jiǎn)單的數(shù)據(jù)類型如int、float等分別分配不同的字節(jié)數(shù)。例如:int在IBM PC上為16位,在VAX-11上就為32位,導(dǎo)致了代碼數(shù)據(jù)的不可移植。在java中,對(duì)數(shù)據(jù)類型的位數(shù)分配總是固定的,而不管是在任何的計(jì)算機(jī)平臺(tái)上。因此就保證了java數(shù)據(jù)的平臺(tái)無(wú)關(guān)性和可移植性。
f. 類型轉(zhuǎn)換
在C/C++語(yǔ)言中,可以通過(guò)指針進(jìn)行任意的類型轉(zhuǎn)換,不安全因素大大增加。而在java語(yǔ)言中系統(tǒng)要對(duì)對(duì)象的處理進(jìn)行嚴(yán)格的相容性檢查,防止不安全的轉(zhuǎn)換。
g. 頭文件
在C/C++語(yǔ)言中使用頭文件聲明類的原型和全局變量及庫(kù)函數(shù)等,在大的系統(tǒng)中,維護(hù)這些頭文件是非常困難的。java不支持頭文件,類成員的類型和訪問(wèn)權(quán)限都封裝在一個(gè)類中,運(yùn)行時(shí)系統(tǒng)對(duì)訪問(wèn)進(jìn)行控制,防止非法的訪問(wèn)。同時(shí),java中用import語(yǔ)句與其它類進(jìn)行通信,以便訪問(wèn)其它類的對(duì)象。
h. 結(jié)構(gòu)和聯(lián)合
C/C++語(yǔ)言中用結(jié)構(gòu)和聯(lián)合來(lái)表示一定的數(shù)據(jù)結(jié)構(gòu),但是由于其成員均為公有的,安全性上存在問(wèn)題。java不支持結(jié)構(gòu)和聯(lián)合,通過(guò)類把數(shù)據(jù)結(jié)構(gòu)及對(duì)該數(shù)據(jù)的操作都封裝在類里面。
i. 預(yù)處理
C/C++語(yǔ)言中有宏定義,而用宏定義實(shí)現(xiàn)的代碼往往影響程序的可讀性,而java不支持宏定義。
【Java語(yǔ)言的基本特點(diǎn)】相關(guān)文章:
Java語(yǔ)言的內(nèi)部類12-13
Java語(yǔ)言的優(yōu)點(diǎn)有哪些04-15
C語(yǔ)言的基本構(gòu)成12-05
淺談C#語(yǔ)言的特點(diǎn)10-28
Java語(yǔ)言編程基礎(chǔ)知識(shí)04-18
C語(yǔ)言基本知識(shí)06-27