Java這門編程語言由於具備跨平臺的特性,並且安全性、併發性較好,因而在企業級開發領域幾乎已經佔領了所有的市場,但也會市場有人提出這樣的疑問:Java還有那些地方是不能取代C++的?能夠說,大部分領域,Java已經取代了C++,不只是Java,其餘語言例如C#,至少在Windows平臺已經將C++取代。其實C++能夠理解爲是C的擴展語言,由於C是面向過程的,而C++和不少當前的熱門語言同樣是面向對象的。程序員
上文中已經提到過,不管是Java仍是C++都是面向對象的編程語言,一樣寫一個「hello world」程序,能夠看到二者的語法結構幾乎沒有什麼太大的區別。面向對象的程序設計思想在這兩種語言當中也有充分的體現。有人曾經提到過,Java自己就是在C++的基礎上衍生出來的語言,只是在某些方面對C++進行了改進。可是C++和Java之間依然存在一些明顯的不一樣。其實Java從整體上而言是很是優秀的編程語言,在很大程度上方便了開發者,但在某些開發的需求上,C++所具備的特色仍是讓不少開發者放不下。編程
要說Java在哪些地方不及C++,那麼首先就體如今其運行速度上:Java須要在虛擬機上解釋運行,在運行效率上要比C和C++低不少。固然,Java的編譯器也在不斷地改進,從而達到實時編譯的效果,在必定程度上加快了Java的運行速度。尚學堂·百戰程序員提示,咱們徹底有理由認爲會出現適用於更多流行平臺的純固有編譯器,由於若是沒有這些編譯器,Java的運行速度回大受限制。雖然二者有語法結構上的類似,但與C++相比,Java數組採用的結構是不一樣的。有一個只讀的length成員,經過它可知道數組有多大。並且一旦超過數組邊界,運行期檢查會自動丟棄一個異常。全部數組都是在內存「堆」裏建立的,咱們可將一個數組分配給另外一個(只是簡單地複製數組句柄)。在Java中數組具備標示,屬於一級對象,其相應的方法對其餘的對象也是適用的。數組
當對那些不屬於主類型的對象,都可以經過new命令建立。與C++不一樣的是,Java不須要在堆棧上建立不屬於主類型的對象。Java能夠不使用new命令在堆和棧上建立主題類型,其主要的類也都封裝,因此可以經過new建立等價的、之內存「堆」爲基礎的對象。Java沒有預處理機。若是須要使用另外一個庫裏的類,能夠用import命令,指定好相應的庫名便可。在Java中,包取代了命名空間。Java採用了封裝的機制,能夠將不少的內容都置於一個類,可針對類名對命名空間分解的操做,因此節省了對命名的操做。數據包也會在單獨一個庫名下收集庫的組件。經過「import」導入包,其他操做由編譯器自動完成。安全
與Java相比,C++還有哪些優點?筆者認爲在當前並無太大的優點。除了以上的不一樣以外,步入C++沒有像Java那樣的GC回收機制,在C++中指針的概念在Java中已經變成了引用,優化了對內存的管理。併發