Java與C/C++有什麼區別

來源:互聯網
上載者:User

Java與C/C++有什麼區別

(1)Java中對記憶體的分配是動態,它採用物件導向的機制,採用運算子new為每個對象分配記憶體空間,而且,實際記憶體還會隨程式運行情況而改變.程式運行中,每個, Java系統自動對記憶體進行掃描,對長期不用的空間作為”垃圾”進行收集,使得系統資源得到更充分地利用.按照這種機制,程式員不必關注記憶體管理問題,這使Java程式的編寫變得簡單明了,並且避免了了由於記憶體管理方面的差錯而導致系統出問題.而C語言通過malloc()和free()這兩個庫函數來分別實現分配內在和釋放記憶體空間的,C++語言中則通過運算子new和delete來分配和釋放記憶體.在C和C++這仲機制中,程式員必須非常仔細地處理記憶體的使用問題.一方面,如果對己釋放的記憶體再作釋放或者對未曾分配的記憶體作釋放,都會造成死機;而另一方面,如果對長期不用的或不再使用的記憶體不釋放,則會浪費系統資源,甚至因此造成資源枯竭. 

(2)Java不在所有類之外定義全域變數,而是在某個類中定義一種公用靜態變數來完成全域變數的功能. 

(3)Java不用goto語句,而是用try-catch-finally異常處理語句來代替goto語句處理出錯的功能. 

(4)Java不支援標頭檔,而C和C++語言中都用標頭檔來定義類的原型,全域變數,庫函數等,這種採用標頭檔的結構使得系統的運行維護相當繁雜. 

(5)Java不支援宏定義,而是使用關鍵字final來定義常量,在C++中則採用宏定義來實現常量定義,這不得於程式的可讀性. 

(6)Java對每種資料類型都分配固定長度.比如,在Java中,int類型總是32位的,而在C和C++中,對於不同的平台,同一個資料類型分配不同的位元組數,同樣是int類型,在PC機中為二位元組即16位,而在VAX-11中,則為32位.這使得C語言造成不可移植性,而Java則具有跨平台性(平台無關性). 

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

(8)結構和聯合的處理.在C和C++中,結構和聯合的所有成員均為公有,這就帶來了安全性問題,而在Java中根本就不包含結構和聯合,所有的內容都封裝在類裡面 

(9)Java不再使用指標.指標是C和C++中最靈活,也最容易產生錯誤的資料類型.由指標所進行的記憶體位址操作常會造成不可預知的錯誤,同時通過指標對某個記憶體位址進行顯式類型轉換後,可以訪問一個C++中的私人成員,從而破壞安全性.而Java對指標進行完全地控制,程式員不能直接進行任何指標操作. 

(10)java是運行在JVM中的,並且是編譯成JVM可識別載入的.class,並不是完全編譯成電腦直接可執行檔程式,C++ 程式直接可在電腦中執行
程式的運行效率C++肯定要比Java程式效率高

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.