之因此寫這篇博客不是爲了比較JAVA語言和C++語言到底孰優孰劣,而是從語言自己出發進行對比總結程序編碼設計上的差異。因水平有限,某些內容可能太過片面,歡迎指正和討論。面試
JAVA語言在設計上很好地借鑑了C++語言,是一種徹底「面向對象」的編程語言。JAVA語言的語法與C++語言的結構語法很是類似,這使得C++程序猿學習JAVA變得很是容易。編程
JAVA語言的最大優勢就是「Wirte Once,Run Everywhere」,就是「一次編寫,處處運行」的意思。JAVA語言相對C++來講,增長了一些新的特性:1)提供了GC,對內存進行自動管理,程序猿無需再程序中進行分配、釋放內存,通常來講不用再擔憂內存分配錯誤;2)再也不使用指針,而是採用其餘的方法來彌補;3)與C++相比,JAVA取消了多重繼承這個類特性,使得類的繼承變得簡潔;4)避免了賦值語句和邏輯語句的混淆,同時取消了其餘值與布爾值之間的自動轉換,這一點有效地下降了某些運行時錯誤。服務器
關於JAVA語言的關鍵特性方面,這也是面試過程當中容易問到的題,它從宏觀方面說明了你對這一門編程語言的理解。JAVA語言是一門很是優秀的編程語言,具備不少有效的特性,最主要的有如下幾個。網絡
簡潔有效。JAVA語言是一門簡潔的「面向對象」的語言,相比C++而言來講更加嚴謹簡潔,它沒有C++語言中全部的難以理解的、容易混淆的特性,例如指針、結構、運算符重載、虛擬基礎類等。編程語言
面向對象。JAVA語言一門徹底面向對象的語言,不支持相似C語言那樣的面向過程的程序設計技術,這也是JAVA語言最重要的語言特性。JAVA語言將數據和對數據的操做都封裝在一個類中,並提供類,接口和繼承,JAVA類(class)僅支持單繼承(C++支持多繼承),接口(interface)支持多繼承,類與接口之間有實現(implements)機制。JAVA在面向對象上相似於SmallTalk,但從其餘方面來講優於SmallTalk。分佈式
可移植性。JAVA應用程序能夠在配備了JAVA解析器和運行環境的任何計算機系統上運行,這使得JAVA應用有了便於移植的良好基礎。性能
解釋型。JAVA語言是一門解釋型語言,相對C/C++來講,JAVA程序執行效率低,速度慢,可是正是由於JAVA經過在不一樣的平臺上運行JAVA解釋器,對JAVA代碼進行解釋,從而實現了「Wirte Once,Run Everywhere」的跨平臺目標。有舍有得啊,另外一面來講,隨着機器性能的提升,解釋技術的改進(像即時編譯,just in time),用戶或許不會在意這種性能上的差別。學習
適合分佈式計算。Java是一種適合於網絡應用程序開發的語言,用Java語言編寫Socket通訊程序能夠像訪問本地文件系統那樣經過URL訪問遠程對象,能夠實現公共網關接口(CGI)腳本的開發,還能夠應用Java小應用程序(Applet)、Java服務器頁面(Java Server Page,JSP)、Servlet等方式進行網絡應用開發。編碼