Java和C/C++的異同

Java和C++都是面嚮對象語言,都使用了面向對象思想(例如封裝、繼承和多態等),由於面向對象有很多非常好的特性(繼承、組合等),因此二者具有很好的可重用性。
不同點:
(1)Java爲解釋性語言,其運行過程爲:程序源代碼經過Java編譯器編譯成字節碼,然後由JVM解釋執行。而C/C++爲編譯型語言,源代碼經過編譯和鏈接後生成可執行的二進制代碼。因此,Java的執行速度比C和C++慢,但是Java能跨平臺執行,C和C++不能。
(2)Java爲純面嚮對象語言,所有代碼(包括函數、變量等)必須在類中實現,除基本數據類型(包括int、float等)外,所有類型都是類。此外,Java中不存在全局變量和全局函數,而C/C++兼具面向過程和麪向對象的特點,可以定義全局變量和全局函數。
(3)與C/C++相比,Java中沒有指針的概念,這有效防止了C/C++語言中操作指針可能引起的系統問題,從而使程序變得更安全。
(4)與C++語言相比,Java語言中不支持多重繼承,但是Java中引入了接口的概念,可以同時實現多個接口。由於接口也有多態的性質,因此在Java中可以通過實現多個接口來實現類似C++中實現多重繼承的目的。
(5)在C++語言中,需要開發人員去管理對內存的分配(包括申請和釋放),而Java語言提供了垃圾回收器來實現垃圾的自動回收,不需要程序顯式的管理內存的分配。C++中通常會把釋放資源的代碼放到析構函數中,Java語言中雖然沒有析構函數,但卻引入了一個finalize()方法,當垃圾回收器要釋放無用對象的內存時,會首先調用該對象的finalize()方法,因此,開發人員不需要關心也不需要知道對象所佔的內存空間何時會被釋放。
更多的還有:C++語言支持運算符重載,而Java語言不支持運算符重載。C++語言支持預處理,而Java語言沒有預處理器,雖然不支持預處理功能(包括頭文件、宏定義等),但它提供的import機制與C++中的預處理器功能相似。C++支持默認函數參數,而Java不支持默認函數參數。C/C++支持goto語句,而Java不提供goto語句(但Java中goto是保留關鍵字)。C/C++支持自動強制類型轉換,而Java不支持自動強制類型轉換,必須由開發人員進行顯式的強制類型轉換。C/C++中,結構和聯合的所有成員均爲公有,這往往會導致安全性問題的發生。而Java本身就不包括結構和聯合,所有內容都封裝在類裏面。
Java具有平臺無關性,即對每種數據類型都分配固定長度,例如,int類型總是佔據32位,而C/C++卻不然,同一個數據類型在不同的平臺上分配不同的字節數。
Java提供對註釋文檔的內建支持,所以源碼文件也可以包含他們自己的文檔。通過一個單獨的文檔,這些文件可以提取出來,重新格式化成HTML。
Java包含了一些標準庫,用於完成特定的任務,同時這些庫簡單易用,能夠大大縮短開發週期,例如,Java提供了用於訪問數據庫的JDBC庫,用於實現分佈式對象的BMI等標準庫。C++則依靠一些非標準的、由其他廠商提供的庫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章