- 相關(guān)推薦
C語言與JAVA理論區(qū)別
C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。Java技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。下面是C語言與JAVA理論區(qū)別,為大家提供參考。
1.全局變量
Java程序中 ,不能在所有類之外定義全局變量 ,只能通過在一個(gè)類中定義公用、靜態(tài)的變量來實(shí)現(xiàn)一個(gè)全局變量。例如 :
Class GlobalVar
{
public static global_var;
}
在類 GlobalVar中定義變量 global_var為 public stat-ic,使其它類可以訪問和修改該變量。Java對(duì)全局變量進(jìn)行了更好的封裝。而在 C中 ,依賴于不加封裝的全局變量常常造成系統(tǒng)的崩潰。
2.Goto
Java不支持 C中的 goto語句 ,而是通過例外處理語句 try, Catch,final等來代替 C中用 goto來處理遇到錯(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í)通過指針對(duì)某個(gè)內(nèi)存地址進(jìn)行顯式類型轉(zhuǎn)換后 ,可以訪問一個(gè) C++中的私有成員 ,從而破壞安全性 ,造成系統(tǒng)的崩潰。而 Java對(duì)指針進(jìn)行完全的控制 ,程序員不能直接進(jìn)行任何指針操作 ,例如:把整數(shù)轉(zhuǎn)化為指針 ,或者通過指針釋放某一內(nèi)存地址等。同時(shí) ,數(shù)組作為類在Java中實(shí)現(xiàn) ,良好地解決了數(shù)組訪問越界這一C、 C++中不作檢查的錯(cuò)誤。
4.內(nèi)存管理
在 C中 ,程序員通過庫函數(shù) malloc()和 free()來分配和釋放內(nèi)存 , C++中則通過運(yùn)算符 new和 來分配和釋放內(nèi)存。再次釋放已釋放的內(nèi)存塊或未被分配的內(nèi)存塊 ,會(huì)造成系統(tǒng)的崩潰 ;同樣 ,忘記釋放不再使用的內(nèi)存塊也會(huì)逐漸耗盡系統(tǒng)資源。而在 Java中 ,所有的數(shù)據(jù)結(jié)構(gòu)都是對(duì)象 ,通過運(yùn)算符new為它們分配內(nèi)存堆。通過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)無關(guān)性。
6.類型轉(zhuǎn)換
在 C中 ,可以通過指針進(jìn)行任意的類型轉(zhuǎn)換 ,常常帶來不安全性 ,而 Java中 ,運(yùn)行時(shí)系統(tǒng)對(duì)對(duì)象的處理要進(jìn)行類型相容性檢查 ,以防止不安全的轉(zhuǎn)換。
7.頭文件
C中用頭文件來聲明類的原型以及全局變量、庫函數(shù)等 ,在大的系統(tǒng)中 ,維護(hù)這些頭文件是很困難的。而 Java不支持頭文件 ,類成員的類型和訪問權(quán)限都封裝在一個(gè)類中 ,運(yùn)行時(shí)系統(tǒng)對(duì)訪問進(jìn)行控制 ,防止對(duì)私有成員的操作。同時(shí) ,Java中用 import語句來與其它類進(jìn)行通訊 ,以便使用它們的方法。
8.結(jié)構(gòu)和聯(lián)合
C中的結(jié)構(gòu)和聯(lián)合中所有成員均為公有 ,這就帶來了安全性問題。Java中不包含結(jié)構(gòu)和聯(lián)合 ,所有的內(nèi)容都封裝在類中。
9.預(yù)處理
C中用宏定義來實(shí)現(xiàn)的代碼給程序的可讀性帶來了困難。在 Java中 ,不支持宏 ,它通過關(guān)鍵字 final來聲明一個(gè)常量 ,以實(shí)現(xiàn)宏定義中廣泛使用的常量定義。
JAVA和C還有一個(gè)最大的區(qū)別,那就是跨平臺(tái)。 通過JAVA虛擬機(jī)的解析,可以使在Windows或UNIX上面寫的程序在其他系統(tǒng)下也能運(yùn)行,而C語言是絕對(duì)不行的。但是C語言在和硬件打交道的時(shí)候,速度是最快的。
C比較基礎(chǔ),java比較流行。但是2者沒有上下之分,一個(gè)是編程語言的鼻祖,一個(gè)是目前流行的跨平臺(tái)語言。擅長(zhǎng)的領(lǐng)域不同,在不同的場(chǎng)合用不同的語言。但是,如何運(yùn)用好這2門語言,也就是對(duì)程序員的一個(gè)考驗(yàn)。魚和熊掌的問題,取舍最終還是只能看你自己。
【C語言與JAVA理論區(qū)別】相關(guān)文章:
C語言與JAVA的區(qū)別12-04
Java程序調(diào)用C/C++語言函數(shù)的方法12-01
c語言、c++語言兩者的區(qū)別和聯(lián)系08-17
淺談c語言和c++和VB的區(qū)別04-02
C語言中Sizeof與Strlen的區(qū)別與聯(lián)系03-30