- 相關(guān)推薦
C語(yǔ)言和JAVA的區(qū)別
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。下面是小編為大家?guī)?lái)的關(guān)于C語(yǔ)言和JAVA的區(qū)別的知識(shí),歡迎閱讀。
C語(yǔ)言和JAVA的區(qū)別
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫(xiě)出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專業(yè)社群。
C語(yǔ)言與JAVA理論區(qū)別
1.全局變量
Java程序中 ,不能在所有類之外定義全局變量 ,只能通過(guò)在一個(gè)類中定義公用、靜態(tài)的變量來(lái)實(shí)現(xiàn)一個(gè)全局變量。例如 :
Class GlobalVar
{
public static global_var;
}
在類 GlobalVar中定義變量 global_var為 public stat-ic,使其它類可以訪問(wèn)和修改該變量。Java對(duì)全局變量進(jìn)行了更好的封裝。而在 C中 ,依賴于不加封裝的全局變量常常造成系統(tǒng)的崩潰。
2.Goto
Java不支持 C中的 goto語(yǔ)句 ,而是通過(guò)例外處理語(yǔ)句 try, Catch,final等來(lái)代替 C中用 goto來(lái)處理遇到錯(cuò)誤時(shí)跳轉(zhuǎn)的.情況 ,使程序更可讀且更結(jié)構(gòu)化。
3.指針
指針是 C、 C++中最靈活 ,也是最容易產(chǎn)生錯(cuò)誤的數(shù)據(jù)類型。由指針?biāo)M(jìn)行的內(nèi)存地址操作常會(huì)造成不可預(yù)知的錯(cuò)誤 ,同時(shí)通過(guò)指針對(duì)某個(gè)內(nèi)存地址進(jìn)行顯式類型轉(zhuǎn)換后 ,可以訪問(wèn)一個(gè) C++中的私有成員 ,從而破壞安全性 ,造成系統(tǒng)的崩潰。而 Java對(duì)指針進(jìn)行完全的控制 ,程序員不能直接進(jìn)行任何指針操作 ,例如:把整數(shù)轉(zhuǎn)化為指針 ,或者通過(guò)指針釋放某一內(nèi)存地址等。同時(shí) ,數(shù)組作為類在Java中實(shí)現(xiàn) ,良好地解決了數(shù)組訪問(wèn)越界這一C、 C++中不作檢查的錯(cuò)誤。
4.內(nèi)存管理
在 C中 ,程序員通過(guò)庫(kù)函數(shù) malloc()和 free()來(lái)分配和釋放內(nèi)存 , C++中則通過(guò)運(yùn)算符 new和 來(lái)分配和釋放內(nèi)存。再次釋放已釋放的內(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)存堆。通過(guò)new得到對(duì)象的處理權(quán) ,而實(shí)際分配給對(duì)象的內(nèi)存可能隨程序運(yùn)行而改變 ,Java對(duì)此自動(dòng)地進(jìn)行管理并且進(jìn)行垃圾收集 ,有效防止了由于程序員的誤操作而導(dǎo)致的錯(cuò)誤 ,并且更好地利用了系統(tǒng)資源。
5.數(shù)據(jù)類型的支持
在 C ,對(duì)于不同的平臺(tái) ,編譯器對(duì)于簡(jiǎn)單數(shù)據(jù)類型如 in t,float等分別分配不同長(zhǎng)度的字節(jié)數(shù) ,例如:int在 IBM PC中為 16位 ,在 VAX-11中為32位 ,這導(dǎo)致了代碼的不可移植性 ,但在 Java中 ,對(duì)于這些數(shù)據(jù)類型總是分配固定長(zhǎng)度的位數(shù) ,如對(duì) int型,它總占 32位 ,這就保證了 Java的平臺(tái)無(wú)關(guān)性。
6.類型轉(zhuǎn)換
在 C中 ,可以通過(guò)指針進(jìn)行任意的類型轉(zhuǎn)換 ,常常帶來(lái)不安全性 ,而 Java中 ,運(yùn)行時(shí)系統(tǒng)對(duì)對(duì)象的處理要進(jìn)行類型相容性檢查 ,以防止不安全的轉(zhuǎn)換。
7.頭文件
C中用頭文件來(lái)聲明類的原型以及全局變量、庫(kù)函數(shù)等 ,在大的系統(tǒng)中 ,維護(hù)這些頭文件是很困難的。而 Java不支持頭文件 ,類成員的類型和訪問(wèn)權(quán)限都封裝在一個(gè)類中 ,運(yùn)行時(shí)系統(tǒng)對(duì)訪問(wèn)進(jìn)行控制 ,防止對(duì)私有成員的操作。同時(shí) ,Java中用 import語(yǔ)句來(lái)與其它類進(jìn)行通訊 ,以便使用它們的方法。
8.結(jié)構(gòu)和聯(lián)合
C中的結(jié)構(gòu)和聯(lián)合中所有成員均為公有 ,這就帶來(lái)了安全性問(wèn)題。Java中不包含結(jié)構(gòu)和聯(lián)合 ,所有的內(nèi)容都封裝在類中。
9.預(yù)處理
C中用宏定義來(lái)實(shí)現(xiàn)的代碼給程序的可讀性帶來(lái)了困難。在 Java中 ,不支持宏 ,它通過(guò)關(guān)鍵字 final來(lái)聲明一個(gè)常量 ,以實(shí)現(xiàn)宏定義中廣泛使用的常量定義。
JAVA和C還有一個(gè)最大的區(qū)別,那就是跨平臺(tái)。 通過(guò)JAVA虛擬機(jī)的解析,可以使在Windows或UNIX上面寫(xiě)的程序在其他系統(tǒng)下也能運(yùn)行,而C語(yǔ)言是絕對(duì)不行的。但是C語(yǔ)言在和硬件打交道的時(shí)候,速度是最快的。
C比較基礎(chǔ),java比較流行。但是2者沒(méi)有上下之分,一個(gè)是編程語(yǔ)言的鼻祖,一個(gè)是目前流行的跨平臺(tái)語(yǔ)言。擅長(zhǎng)的領(lǐng)域不同,在不同的場(chǎng)合用不同的語(yǔ)言。但是,如何運(yùn)用好這2門語(yǔ)言,也就是對(duì)程序員的一個(gè)考驗(yàn)。魚(yú)和熊掌的問(wèn)題,取舍最終還是只能看你自己。
【C語(yǔ)言和JAVA的區(qū)別】相關(guān)文章:
java語(yǔ)言和c語(yǔ)言的區(qū)別07-25
C++、C語(yǔ)言和JAVA開(kāi)發(fā)的區(qū)別06-28
C++、C語(yǔ)言和JAVA開(kāi)發(fā)有哪些區(qū)別08-09
C語(yǔ)言和C++的區(qū)別09-19
C語(yǔ)言和C++的區(qū)別精選10-16
Java與C/C++的區(qū)別06-18
C語(yǔ)言與JAVA的區(qū)別07-07
C語(yǔ)言和C++有什么區(qū)別05-19