首頁 >Java >java教程 >java與c語言的差別有哪些?

java與c語言的差別有哪些?

青灯夜游
青灯夜游原創
2019-11-16 13:30:5414176瀏覽

java與c語言的差別有哪些?

java與c語言的差異有哪些?

1、Java與C記憶體分配不同:

Java中記憶體分配五個區,分別為堆疊區(儲存的是局部變量,使用完畢,立即回收),堆區(儲存的是new出來的東西,實體,對象,每一個對像都有地址值,每個對象的資料都有預設值,使用完畢後,會在垃圾回收器空閒的時候回收),方法區,本地方法區(和系統相關),寄存區(給cpu使用)。 【推薦學習:java課程

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語言的差別有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:java有用嗎?下一篇:java有用嗎?