糯米文學吧

位置:首頁 > 計算機 > C語言

C語言與JAVA理論區別

C語言1.5W

C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。Java技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、遊戲控制枱、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社羣。下面是C語言與JAVA理論區別,為大家提供參考。

C語言與JAVA理論區別

  1.全局變量

Java程序中 ,不能在所有類之外定義全局變量 ,只能通過在一個類中定義公用、靜態的變量來實現一個全局變量。例如 :

Class GlobalVar

{

public static global_var;

}

在類 GlobalVar中定義變量 global_var為 public stat-ic,使其它類可以訪問和修改該變量。Java對全局變量進行了更好的封裝。而在 C中 ,依賴於不加封裝的全局變量常常造成系統的崩潰。

  

Java不支持 C中的 goto語句 ,而是通過例外處理語句 try, Catch,final等來代替 C中用 goto來處理遇到錯誤時跳轉的情況 ,使程序更可讀且更結構化。

  3.指針

指針是 C、 C++中最靈活 ,也是最容易產生錯誤的數據類型。由指針所進行的內存地址操作常會造成不可預知的錯誤 ,同時通過指針對某個內存地址進行顯式類型轉換後 ,可以訪問一個 C++中的私有成員 ,從而破壞安全性 ,造成系統的崩潰。而 Java對指針進行完全的控制 ,程序員不能直接進行任何指針操作 ,例如:把整數轉化為指針 ,或者通過指針釋放某一內存地址等。同時 ,數組作為類在Java中實現 ,良好地解決了數組訪問越界這一C、 C++中不作檢查的錯誤。

  4.內存管理

在 C中 ,程序員通過庫函數 malloc()和 free()來分配和釋放內存 , C++中則通過運算符 new和 來分配和釋放內存。再次釋放已釋放的內存塊或未被分配的內存塊 ,會造成系統的崩潰 ;同樣 ,忘記釋放不再使用的內存塊也會逐漸耗盡系統資源。而在 Java中 ,所有的數據結構都是對象 ,通過運算符new為它們分配內存堆。通過new得到對象的處理權 ,而實際分配給對象的內存可能隨程序運行而改變 ,Java對此自動地進行管理並且進行垃圾收集 ,有效防止了由於程序員的.誤操作而導致的錯誤 ,並且更好地利用了系統資源。

  5.數據類型的支持

在 C ,對於不同的平台 ,編譯器對於簡單數據類型如 in t,float等分別分配不同長度的字節數 ,例如:int在 IBM PC中為 16位 ,在 VAX-11中為32位 ,這導致了代碼的不可移植性 ,但在 Java中 ,對於這些數據類型總是分配固定長度的位數 ,如對 int型,它總佔 32位 ,這就保證了 Java的平台無關性。

  6.類型轉換

在 C中 ,可以通過指針進行任意的類型轉換 ,常常帶來不安全性 ,而 Java中 ,運行時系統對對象的處理要進行類型相容性檢查 ,以防止不安全的轉換。

  7.頭文件

C中用頭文件來聲明類的原型以及全局變量、庫函數等 ,在大的系統中 ,維護這些頭文件是很困難的。而 Java不支持頭文件 ,類成員的類型和訪問權限都封裝在一個類中 ,運行時系統對訪問進行控制 ,防止對私有成員的操作。同時 ,Java中用 import語句來與其它類進行通訊 ,以便使用它們的方法。

  8.結構和聯合

C中的結構和聯合中所有成員均為公有 ,這就帶來了安全性問題。Java中不包含結構和聯合 ,所有的內容都封裝在類中。

  9.預處理

C中用宏定義來實現的代碼給程序的可讀性帶來了困難。在 Java中 ,不支持宏 ,它通過關鍵字 final來聲明一個常量 ,以實現宏定義中廣泛使用的常量定義。

JAVA和C還有一個最大的區別,那就是跨平台。 通過JAVA虛擬機的解析,可以使在Windows或UNIX上面寫的程序在其他系統下也能運行,而C語言是絕對不行的。但是C語言在和硬件打交道的時候,速度是最快的。

C比較基礎,java比較流行。但是2者沒有上下之分,一個是編程語言的鼻祖,一個是目前流行的跨平台語言。擅長的領域不同,在不同的場合用不同的語言。但是,如何運用好這2門語言,也就是對程序員的一個考驗。魚和熊掌的問題,取捨最終還是隻能看你自己。

標籤:JAVA 語言 理論