溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言與JAVA的區(qū)別是什么

發(fā)布時(shí)間:2021-01-22 15:58:07 來源:億速云 閱讀:141 作者:Leah 欄目:編程語言

這篇文章給大家介紹C語言與JAVA的區(qū)別是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

首先來說說他們各自的歷史:C語言的發(fā)展歷史

C語言的發(fā)展頗為有趣。它的原型ALGOL 60語言。(也成為A語言)

1963年,劍橋大學(xué)將ALGOL 60語言發(fā)展成為CPL(Combined Programming Language)語言。

1967年,劍橋大學(xué)的Matin Richards 對(duì)CPL語言進(jìn)行了簡(jiǎn)化,于是產(chǎn)生了BCPL語言。

1970年,美國(guó)貝爾實(shí)驗(yàn)室的Ken Thompson將BCPL進(jìn)行了修改,并為它起了一個(gè)有趣的名字“B語言”。意思是將CPL語言煮干,提煉出它的精華。并且他用B語言寫了第一個(gè)UNIX操作系統(tǒng)。

而在1973年,B語言也給人“煮”了一下,美國(guó)貝爾實(shí)驗(yàn)室的D.M.RITCHIE在B語言的基礎(chǔ)上最終設(shè)計(jì)出了一種新的語言,他取了BCPL的第二個(gè)字母作為這種語言的名字,這就是C語言。

為了使UNIX操作系統(tǒng)推廣,1977年Dennis M.Ritchie 發(fā)表了不依賴于具體機(jī)器系統(tǒng)的C語言編譯文本《可移植的C語言編譯程序》。

1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,從而使C語言成為目前世界上流行最廣泛的高級(jí)程序設(shè)計(jì)語言。

1988年,隨著微型計(jì)算機(jī)的日益普及, 出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標(biāo)準(zhǔn),使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國(guó)國(guó)家標(biāo)準(zhǔn)研究所(ANSI)為C語言制定了一套ANSI標(biāo)準(zhǔn), 成為現(xiàn)行的C語言標(biāo)準(zhǔn) 3.C語言的主要特點(diǎn) 。C語言發(fā)展迅速, 而且成為最受歡迎的語言之一, 主要因?yàn)樗哂袕?qiáng)大的功能。許多著名的系統(tǒng)軟件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語言編寫的。用C語言加上一些匯編語言子程序, 就更能顯示C語言的優(yōu)勢(shì)了,象PC- DOS 、WORDSTAR等就是用這種方法編寫的。

在來說說Java

Java是一個(gè)由Sun公司開發(fā)而成的新一代編程語言。使用它可在各式各樣不同種機(jī)器、不同種操作平臺(tái)的網(wǎng)絡(luò)環(huán)境中開發(fā)軟件。不論你使用的是哪一種WWW瀏覽器,哪一種計(jì)算機(jī),哪一種操作系統(tǒng),只要WWW瀏覽器上面注明了“支持Java”,你就可以看到生動(dòng)的主頁。Java正在逐步成為Internet應(yīng)用的主要開發(fā)語言。它徹底改變了應(yīng)用軟件的開發(fā)模式,帶來了自PC機(jī)以來又一次技術(shù)革命,為迅速發(fā)展的信息世界增添了新的活力。

Sun的Java語言開發(fā)小組成立于1991年,其目的是開拓消費(fèi)類電子產(chǎn)品市場(chǎng),例如,交互式電視、烤面包箱等。Sun內(nèi)部人員把這個(gè)項(xiàng)目稱為Green,那時(shí)WorldWideWeb還在圖紙上呢。該小組的領(lǐng)導(dǎo)人是JamesGosling,是一位非常杰出的程序員。他出生于1957年,于1984年加盟SunMicrosystem公司,之前在一家IBM研究機(jī)構(gòu)工作。他是SunNeWs窗口系統(tǒng)的總設(shè)計(jì)師。也是第一個(gè)用C實(shí)現(xiàn)的EMACS的文本編輯器COSMACS的開發(fā)者。

在研究開發(fā)過程中,Gosling深刻體會(huì)到消費(fèi)類電子產(chǎn)品和工作站產(chǎn)品在開發(fā)哲學(xué)上的差異:消費(fèi)類電子產(chǎn)品要求可靠性高、費(fèi)用低、標(biāo)準(zhǔn)化、使用簡(jiǎn)單,用戶并不關(guān)心CPU的型號(hào),也不欣賞專用昂貴的RISC處理器,他們需要建立在一個(gè)標(biāo)準(zhǔn)基礎(chǔ)之上,具有一系列可選的方案,從8086到80586都可以選取。

C語言和JAVA其實(shí)是很相識(shí)的,最直接的區(qū)別就在與,一個(gè)是全面向過程,一個(gè)是面向?qū)ο蟆6襃AVA是可以跨平臺(tái)的。而C語言不能,但能夠直接操作硬件,并且生成機(jī)器碼的效率高。C語言多了一個(gè),指針也是C語言的精髓,想要學(xué)好C語言,指針就必須學(xué)好。JAVA是沒有指針的。

總的來說,C語言是基礎(chǔ)語言,JAVA是面向?qū)ο蟮囊婚T語言,在學(xué)習(xí)JAVA語言前,我覺得還是最好先學(xué)習(xí)C語言,因?yàn)镃語言的語法比較簡(jiǎn)單,只是他的亮點(diǎn)指針很容易出錯(cuò),想要好好的運(yùn)用指針是件很難的事,當(dāng)然,用好了,對(duì)你的程序是有很好的幫助,反之,就會(huì)讓你的程序崩潰掉。JAVA更實(shí)用于開發(fā)東西了,比較實(shí)用,因?yàn)镴AVA面向?qū)ο舐?。和我們的思維很相似,所以開發(fā)起來就簡(jiǎn)單些,而C語言是面向過程,就和我們的思維方式有著差異,開發(fā)就很少了。而且很難。但因?yàn)镃語言能夠直接操作硬件,所以在一些嵌入式系統(tǒng)中,C語言是使用最廣泛的語言。

在語法中

JAVA是從可以算是從C++發(fā)展而來的,因此Java與C語言的語法比較類似的。

在語法的程序庫(kù)中

言有著自己的標(biāo)準(zhǔn)庫(kù),JAVA卻有著自己得類庫(kù)。

在內(nèi)存的管理中

C語言在使用完一塊內(nèi)存時(shí),要手動(dòng)把內(nèi)存釋放掉,如果不釋放的話,運(yùn)行久了,程序很容易就會(huì)崩潰掉的。由于需要顯式的歸還內(nèi)存,因此當(dāng)一個(gè)函數(shù)需要將一塊內(nèi)存返回給調(diào)用者的時(shí)候,問題就比較復(fù)雜了。所以我們所以時(shí)要注意:(1) 在調(diào)用者中先分配好內(nèi)存,作為參數(shù)傳入到被調(diào)用的函數(shù)中(2) 在被調(diào)用的函數(shù)中分配,使用完后在調(diào)用者中釋放(3) 在被調(diào)用函數(shù)中使用static變量,可以將該變量返回。

而JAVA基本不用考慮內(nèi)存的問題,如果想用一個(gè)對(duì)象,new一個(gè)就可以,這個(gè)過程的背后則是JRE為對(duì)象分類的一定內(nèi)存,當(dāng)JRE發(fā)現(xiàn)你不再使用這個(gè)對(duì)象的時(shí)候,他就會(huì)自動(dòng)回收內(nèi)存,也就是說你只管借東西,不用管歸還,因?yàn)榕c有人當(dāng)你的跟班,在你不使用的時(shí)候就把東西歸還了,不過這個(gè)過程還是有的,只不過是JRE作的而已。

語法中使用的基本類型

C語言有著很多的基本類型如:(boolean, char, byte, short, int, long, float, double,struct, union, enum)還有數(shù)組,指針等等。

在JAVA中:只有(boolean, char, byte, short, int, long, float, double)這8種基本類型和引用的。

在繼承中

兩種語言都支持方法重載的

C語言是多線繼承,比如:小轎車和貨車都繼承了汽車類,奧迪2000是繼承小轎車的,東風(fēng)大卡車是繼承貨車,這樣奧迪2000也可以繼承貨車,東風(fēng)大卡車也可以繼承小轎車。

JAVA是單繼承的,比如:小轎車和貨車都繼承了汽車類,奧迪2000是繼承小轎車的,東風(fēng)大卡車是繼承貨車,這樣奧迪2000就不能繼承貨車,當(dāng)然東風(fēng)大卡車也不能繼承小轎車。

動(dòng)態(tài)、靜態(tài)綁定

在C語言中,為了允許運(yùn)行時(shí)動(dòng)態(tài)決定哪個(gè)函數(shù)被調(diào)用,一個(gè)函數(shù)必須用virtual修飾。virtual關(guān)鍵字被自動(dòng)繼承,用以支持多態(tài);凡是沒有用virtual修飾的成員函數(shù)(包括static)都是靜態(tài)綁定的,即在編譯時(shí)決定調(diào)用哪個(gè)版本

而在Java中,除了static、final、private是靜態(tài)綁定以外,所有方法一律按動(dòng)態(tài)綁定處理

初始值

在C語言中,是可以不初始化使用的

而在JAVA中,是必須初始化值的

抽象方法或抽象類

C語言的對(duì)等語法是“純虛函數(shù)”和“抽象類”

Java使用abstract關(guān)鍵字修飾抽象方法或抽象類,final類不能被繼承

都使用抽象類作為繼承層次中的基類,提供一般概念,由子類實(shí)現(xiàn)其抽象方法,且抽象類都不能被直接實(shí)例化為對(duì)象

super

JAVA super關(guān)鍵字,指代父類對(duì)象,通常被用于調(diào)用父類的構(gòu)造方法或一般方法
C語言沒有super關(guān)鍵字

this

兩者都有,都是只當(dāng)前的對(duì)象

package

C語言沒有

Java有package的概念,可以將類組織起來,便于打包和部署,也有利于類的安全。

在語法中還有很多的差異,就不一一列出來了,可以看出,JAVA比C語言要精簡(jiǎn)很多,在生活上的實(shí)用性也很強(qiáng),C語言卻是哎操作內(nèi)存上比較強(qiáng)。也就是說JAVA比較適合在上層工作,只要我們懂得接口就好,而C語言卻是在網(wǎng)絡(luò)下層工作的,要對(duì)協(xié)議比較了解??傊?,各有各的好處,各有各的領(lǐng)域。

關(guān)于C語言與JAVA的區(qū)別是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI