Java和C語(yǔ)言作為業(yè)界經(jīng)常提到的兩種語(yǔ)言,有著很大的不同。選擇不同的語(yǔ)言也會(huì)導(dǎo)致以后的發(fā)展大不相同,那么Java和C語(yǔ)言有什么差別呢?
1、Java與C語(yǔ)言各自的優(yōu)勢(shì)
C語(yǔ)言是面向過(guò)程的語(yǔ)言,執(zhí)行效率高;Java是面向?qū)ο蟮恼Z(yǔ)言,執(zhí)行效率比C語(yǔ)言低。
C語(yǔ)言最關(guān)鍵的是比Java多了指針,這也說(shuō)明了Java的健壯性,還有Java的多線(xiàn)程機(jī)制使程序可以并行運(yùn)行,Java程序多用于網(wǎng)絡(luò)。
C語(yǔ)言的安全性不如Java,C語(yǔ)言沒(méi)有Java的垃圾回收機(jī)制,申請(qǐng)的空間要手動(dòng)釋放。
Java的通用性好,可以跨平臺(tái)直接移植,只要有安裝Java虛擬機(jī)(JVM)就可以了。
2、Java和C語(yǔ)言誰(shuí)的通用性會(huì)比較好
在速度上,C語(yǔ)言編寫(xiě)的程序要優(yōu)于Java,因?yàn)镴ava必須運(yùn)行在虛擬機(jī)的環(huán)境中,但是因?yàn)樘摂M機(jī),Java獲得的平臺(tái)無(wú)關(guān)性,而C語(yǔ)言的程序有可能需要重新修改編譯才能實(shí)現(xiàn)平臺(tái)的移植,
另一方面,C語(yǔ)言比Java語(yǔ)言更“底層”,因此可以用C編寫(xiě)例如硬件的驅(qū)動(dòng),而Java卻不行。Java和C語(yǔ)言還有個(gè)明顯的不同就是C語(yǔ)言注重的是算法,但是Java卻不一樣,想用的時(shí)候?qū)О涂梢粤恕?/span>
C語(yǔ)言的算法很重要,但是Java中的算法沒(méi)有C語(yǔ)言那么復(fù)雜。打印的方法:C語(yǔ)言是printf("…….");而Java是System.out.print("……."),也可以用println,ln表示換行。
Java程序中的基本數(shù)據(jù)類(lèi)型(boolean, char, byte, short, int, long, float, double),是對(duì)對(duì)象的引用;C語(yǔ)言也有許多種基本類(lèi)型,還有struct, union, enum, 數(shù)組和指針。
在Java沒(méi)有枚舉、聯(lián)合類(lèi)型。Java采用Unicode字符集,C語(yǔ)言通常采用的是ASCII字符集,A—65,a—97。C語(yǔ)言的變量可以不進(jìn)行初始化,但Java的變量要進(jìn)行初始化。
在C語(yǔ)言中,char類(lèi)型占一個(gè)字節(jié),在Java中char類(lèi)型占2個(gè)字節(jié)。
3、Java和C語(yǔ)言各自的特征
Java面向?qū)ο蟮奶卣髦饕蟹庋b,繼承,多態(tài)。類(lèi)的繼承關(guān)系是單一的、非多重的,一個(gè)子類(lèi)只有一個(gè)父類(lèi),子類(lèi)的父類(lèi)又只有一個(gè)父類(lèi)。C語(yǔ)言支持“運(yùn)算符的重載”,這是它的一個(gè)很重要的多態(tài)特征,是數(shù)據(jù)抽象和泛型編程的利器。它允許直接對(duì)對(duì)象進(jìn)行四則運(yùn)算,正像基本數(shù)據(jù)類(lèi)型那樣Java不支持這種多態(tài)機(jī)制,也是為降低復(fù)雜性。
Java可以支持方法重載和重寫(xiě),所謂重載就是一個(gè)類(lèi)具備多個(gè)相同屬性行為;重寫(xiě)就是在繼承關(guān)系中父類(lèi)的行為在不同的子類(lèi)上有不同的實(shí)現(xiàn)。在Java中比C語(yǔ)言多了一些修飾符,如訪(fǎng)問(wèn)修飾符Public(公共的)、Private (私有的)、Protected (受保護(hù)的)、默認(rèn)。
Java有super關(guān)鍵字,指代父類(lèi)對(duì)象,通常被用于調(diào)用父類(lèi)的構(gòu)造方法或一般方法 C語(yǔ)言則沒(méi)有super關(guān)鍵字,兩者都有this,指代當(dāng)前對(duì)象。
在Java中,除了static、final、private是靜態(tài)綁定以外,所有方法一律按動(dòng)態(tài)綁定處理。Java中可以將類(lèi)組織起來(lái)用Package打包,而C語(yǔ)言沒(méi)有。
以上就是Java和c語(yǔ)言的具體差別,Java的學(xué)習(xí)難度比C語(yǔ)言要大一些,學(xué)習(xí)門(mén)檻比C語(yǔ)言也高。所以如果你本科以上學(xué)歷,建議你學(xué)習(xí)Java,而如果你0基礎(chǔ)、學(xué)歷也高的話(huà)可以選擇學(xué)C語(yǔ)言,學(xué)完C語(yǔ)言后如果你還想學(xué)Java可以再繼續(xù)學(xué)Java,學(xué)完C再學(xué)Java更簡(jiǎn)單。