您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹java和c語言的區別,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
1、Java與C內存分配不同:
Java中內存分配五個區,分別為棧區(存儲的是局部變量,使用完畢,立即回收),堆區(存儲的是new出來的東西,實體,對象,每一個對象都有地址值,每個對象的數據都有默認值,使用完畢后,會在垃圾回收器空閑的時候回收),方法區,本地方法區(和系統相關),寄存區(給cpu使用)。
C中內存分配四個區,分別為棧區(存儲函數參數,局部變量的值),堆區(動態內存申請與釋放,若程序員不釋放內存,則程序結束后可能由操作系統釋放),全局區(靜態區),代碼區。
2、函數
1)對于變量和函數,C需要實現聲明和定義,而Java中只有定義,沒有聲明;
2)由于C不是面向對象的,所以C中所有全局變量和函數本質上對Java而言都是靜態的。Java是一種面向對象語言,它不允許在類和接口之外聲明函數,包括 main 函數和變量。而在C中,常會出現在一個文件中定義大量的全局變量,在其他文件中通過引用聲明這些變量來實現共享,但Java不允許有全局變量或函數;
3)當C中函數返回值的類型和聲明時類型不相符時,函數的返回值會自動轉換為這個類型之后再進行函數返回;而在Java中面對次情況時,需要加入強制類型轉換;
4)C中函數調用參數計算的順序是未定義的,而Java 是從左到右有順序的;
5)C中如果變量或函數在別的文件中定義的,必須使用extern 來聲明該變量或函數。在單個文件編譯的時候它們是不可見,而在鏈接階段才可見。Java的編譯器沒有這種鏈接階段,所有需要的文件在編譯時必須可見;
6)C和Java程序都從 main 函數開始執行。C中main 函數一般需要有 argc,argv 兩個參數,argc 存在命令行參數個數,argv 存在實際的命令行參數;java 中main 必須用 stringargs[] 作為方法的參數,它是用來接收運行系統啟動Java 應用程序時所用的命令行的參數;
7)C和Java中可以調用 exit 函數來終結程序;C中可利用abort 函數來退出非正常終止的程序,Java 中沒有相對應的策略。
3、預處理器及頭文件的比較
Java沒有預處理器,也沒有頭文件;C中預處理器只是接收一些文本并將其轉換成為其他文本,編譯器對預處理的源程序進行編譯,在C中通常用頭文件來聲明原型以及全局變量、庫函數等。
4、用途上
C語言:純C一般用在嵌入式上,編寫最底層的程序,因為他的語言與硬件的連接最容易。可以做:嵌入式底層軟件 操作系統 各類函數庫引擎庫軟件核心代碼 服務器端底層工具。
JAVA:J2EE,J2SM,J2ME什么都可以。可以做:嵌入式移動設備應用軟件開發 web網頁后臺邏輯開發部分桌面程序
C,JAVA其實都可用在各種領域的。
5、在運行方式上:
C語言:原始的C是面向過程的,就是按行執行。
JAVA:絕對的面向對象,是按模塊執行。
(補充:當然,在C++,及C#上,C也有向面向對象模式轉換)
6、語法不同:
C語言可以直接操作內存,java不能直接操作;
C語言可以封裝動態庫,java不行;
C語言的代碼不容易跨平臺,java的代碼容易跨平臺;
C語言有指針,java沒有指針;
C語言可以直接操作串口,java需要第三方jar包支持;
C語言的線程更加靈活,java的線程都已經封裝好了;
C可用的標識符為數字、大小寫字母、下劃線,不能以數字開頭;Java可用的標識符除了C的三種以外,多一種美元符號($),同樣不能以數字開頭。
關于java和c語言的區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。