C語言與JAVA理論區別
C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。Java技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、遊戲控制枱、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社羣。下面是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門語言,也就是對程序員的一個考驗。魚和熊掌的問題,取捨最終還是隻能看你自己。
-
C++跳轉語句之Goto對變量定義的影響詳解
goto語句也稱為無條件轉移語句,以下是為大家分享的C++跳轉語句之Goto對變量定義的影響詳解,供大家參考借鑑,歡迎瀏覽!前言goto語句也稱為無條件轉移語句,其基本形式如下:語句標號由一個有效地標識符和符號";"組成,其中,標識符的命名規則與變量名稱相同,即由字母、數字...
-
C++ cin輸入流詳解
標準輸入流是從標準輸入設備(鍵盤)流向程序的數據。在頭文件iostream.h中定義了cin、cout、cerr、clog4個流對象,cin是輸入流,cout、cerr、clog是輸出流。下面是小編為大家整理的C++cin輸入流詳解,歡迎參考~cin是istream類的對象,它從標準輸入設備(鍵盤)獲取數據,程...
-
基礎C語言編程時易犯錯誤
C編譯的程序對語法檢查並不象其它高級語言那麼嚴格,這就給編程人員留下“靈活的餘地”,但還是由於這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來説,經常會出一些連自己都不知道錯在哪裏的錯誤。看着有錯的程序,不知該如何改起,通過對C的學習,積累了一些C...
-
嵌入式C語言優化技巧
嵌入式系統是指完成一種或幾種特定功能的計算機系統,具有自動化程度高,響應速度快等優點,目前已廣泛應用於消費電子,工業控制等領域。嵌入式系統受其使用的硬件以及運行環境的限制,非常注重代碼的時間和空間效率,因此選擇一種合適的開發語言十分重要。下面是相關的知...