溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java和c語言的區(qū)別是什么

發(fā)布時間:2020-06-26 16:09:01 來源:億速云 閱讀:1608 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹java和c語言的區(qū)別,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1、Java與C內(nèi)存分配不同:

Java中內(nèi)存分配五個區(qū),分別為棧區(qū)(存儲的是局部變量,使用完畢,立即回收),堆區(qū)(存儲的是new出來的東西,實體,對象,每一個對象都有地址值,每個對象的數(shù)據(jù)都有默認(rèn)值,使用完畢后,會在垃圾回收器空閑的時候回收),方法區(qū),本地方法區(qū)(和系統(tǒng)相關(guān)),寄存區(qū)(給cpu使用)。

C中內(nèi)存分配四個區(qū),分別為棧區(qū)(存儲函數(shù)參數(shù),局部變量的值),堆區(qū)(動態(tài)內(nèi)存申請與釋放,若程序員不釋放內(nèi)存,則程序結(jié)束后可能由操作系統(tǒng)釋放),全局區(qū)(靜態(tài)區(qū)),代碼區(qū)。

2、函數(shù)

1)對于變量和函數(shù),C需要實現(xiàn)聲明和定義,而Java中只有定義,沒有聲明;

2)由于C不是面向?qū)ο蟮?,所以C中所有全局變量和函數(shù)本質(zhì)上對Java而言都是靜態(tài)的。Java是一種面向?qū)ο笳Z言,它不允許在類和接口之外聲明函數(shù),包括 main 函數(shù)和變量。而在C中,常會出現(xiàn)在一個文件中定義大量的全局變量,在其他文件中通過引用聲明這些變量來實現(xiàn)共享,但Java不允許有全局變量或函數(shù);

3)當(dāng)C中函數(shù)返回值的類型和聲明時類型不相符時,函數(shù)的返回值會自動轉(zhuǎn)換為這個類型之后再進行函數(shù)返回;而在Java中面對次情況時,需要加入強制類型轉(zhuǎn)換;

4)C中函數(shù)調(diào)用參數(shù)計算的順序是未定義的,而Java 是從左到右有順序的;

5)C中如果變量或函數(shù)在別的文件中定義的,必須使用extern 來聲明該變量或函數(shù)。在單個文件編譯的時候它們是不可見,而在鏈接階段才可見。Java的編譯器沒有這種鏈接階段,所有需要的文件在編譯時必須可見;

6)C和Java程序都從 main 函數(shù)開始執(zhí)行。C中main 函數(shù)一般需要有 argc,argv 兩個參數(shù),argc 存在命令行參數(shù)個數(shù),argv 存在實際的命令行參數(shù);java 中main 必須用 stringargs[] 作為方法的參數(shù),它是用來接收運行系統(tǒng)啟動Java 應(yīng)用程序時所用的命令行的參數(shù);

7)C和Java中可以調(diào)用 exit 函數(shù)來終結(jié)程序;C中可利用abort 函數(shù)來退出非正常終止的程序,Java 中沒有相對應(yīng)的策略。

3、預(yù)處理器及頭文件的比較

Java沒有預(yù)處理器,也沒有頭文件;C中預(yù)處理器只是接收一些文本并將其轉(zhuǎn)換成為其他文本,編譯器對預(yù)處理的源程序進行編譯,在C中通常用頭文件來聲明原型以及全局變量、庫函數(shù)等。

4、用途上

C語言:純C一般用在嵌入式上,編寫最底層的程序,因為他的語言與硬件的連接最容易。可以做:嵌入式底層軟件 操作系統(tǒng) 各類函數(shù)庫引擎庫軟件核心代碼 服務(wù)器端底層工具。

JAVA:J2EE,J2SM,J2ME什么都可以??梢宰觯呵度胧揭苿釉O(shè)備應(yīng)用軟件開發(fā) web網(wǎng)頁后臺邏輯開發(fā)部分桌面程序

C,JAVA其實都可用在各種領(lǐng)域的。

5、在運行方式上:

C語言:原始的C是面向過程的,就是按行執(zhí)行。

JAVA:絕對的面向?qū)ο?,是按模塊執(zhí)行。

(補充:當(dāng)然,在C++,及C#上,C也有向面向?qū)ο竽J睫D(zhuǎn)換)

6、語法不同:

  • C語言可以直接操作內(nèi)存,java不能直接操作;

  • C語言可以封裝動態(tài)庫,java不行;

  • C語言的代碼不容易跨平臺,java的代碼容易跨平臺;

  • C語言有指針,java沒有指針;

  • C語言可以直接操作串口,java需要第三方j(luò)ar包支持;

  • C語言的線程更加靈活,java的線程都已經(jīng)封裝好了;

  • C可用的標(biāo)識符為數(shù)字、大小寫字母、下劃線,不能以數(shù)字開頭;Java可用的標(biāo)識符除了C的三種以外,多一種美元符號($),同樣不能以數(shù)字開頭。

關(guān)于java和c語言的區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI