1. Java的優點
Sun Microsystems公司對Java語言的描述:"Java is a simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, and dynamic language"。
具體來說,java具有以下幾個優點:
(1)Java爲純面嚮對象語言。
所有代碼(包括函數、變量等)必須在類中實現,除基本數據類型以外,所有類型都是類。而C++兼具面向過程和麪向對象編程的特點。
(2)平臺無關性。“一次編譯,到處運行”
Java爲解釋型語言,編譯器把Java代碼編譯成字節碼,然後在Java虛擬機上解釋執行,具有很好的可移植性。
(3)Java提供了很多內置的類庫,簡化開發。
(4)Java提供了對Web應用程序的開發。
(5)具有較好的安全性和健壯性
Java語言提供了一個防止惡意代碼攻擊的安全機制(數組邊界檢測和Bytecode校驗等),增強了程序的安全性。
Java的強類型機制、垃圾回收器、異常處理和安全檢查機制保證了健壯性。
(6)去除了C++語言中難以理解、容易混淆的特性,如指針。
2. Java與C++的異同
同:Java和C++都是面嚮對象語言,都使用了面向對象思想(例如封裝、繼承、多態等)
異:(1)Java是解釋型語言,由編譯器編譯成字節碼文件,再由虛擬機解釋執行。
C++是編譯型語言,源代碼經編譯和鏈接生成可執行的二進制代碼。
(2)Java爲純面嚮對象語言,所有代碼(包括函數、變量等)必須在類中實現,除基本數據類型以外,所有類型都是類。Java語言中不存在全局變量或全局函數,即不能在所有類之外定義全局變量,只能通過在一個類中定義public static 的變量來實現一個全局變量。
C++兼具面向過程和麪向對象編程的特點。可以定義全局變量和全局函數。
(3)Java語言不支持多重繼承,但Java引入了接口,可以同時實現多個接口,來實現與C++多重繼承類似的目的。Java中的接口是支持多繼承的。
(4)Java提供了垃圾回收器來實現垃圾的自動回收。C++語言中需要開發人員去管理對內存的分配。
(5)Java語言沒有指針的概念。
(6)Java不支持運算符重載,而C++支持。
(7)Java不支持自動強制類型轉換,必須顯示地強制類型轉換。而C++支持自動強制類型轉換,這會導致程序的不安全。
(8)Java不提供goto語句,但保留了goto關鍵字。而C++支持goto語句。
(9)Java沒有預處理器。不支持預處理功能(包括頭文件、宏定義等),但它提供的import機制與C++中的預處理功能類似。
(10)Java具有平臺無關性,即對每種數據類型都分配固定長度,而C++同種數據類型在不同的平臺上會分配不同的字節數。