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