C++和Java區別

來源:互聯網
上載者:User
 

(1)      Java有記憶體回收機制,當然也就沒有C++的解構函式。但是,可控制性和C++相比就差了一點,而且也不是說有了記憶體回收,就不會產生記憶體流失。由於相互引用等原因可能造成對象的生存周期過長,記憶體回收失效。對象記憶體的回收,個人認為應該是由程式員來掌握的事情。C++可以用auto_ptr,shared_ptr等智能指標來完成自動析構,當然前提是你要熟悉他們的實現機制和應用場合(2)      Java中所有的對象都是分配在堆上,在Java中只有控制代碼,也就是引用,沒有指標。這樣做有哪些好處呢? a)沒有指標。在java中沒有sizeof, 沒有*。看看下面這些語句吧,感覺是不是很象。b) 避免了臨時對象。在Java中所有的對象都是以控制代碼表示,函數參數傳遞,結果返回等都是以控制代碼形式。也就避免了C++中經常出現的局部指標局部引用問題, 對象參數拷貝賦值,切片等問題,提高了效率和可靠性。String a = new String(“123”); // Java Codestd::string *a = new string(“123”);  //c++ code(c) 在Java中,內含項目關聯性只能由控制代碼表示。(3) Java是單根繼承體系,而C++可以有多重繼承。java可以用interface來實現多重繼承。來談談Java中的Object類,許多有趣的地方。Clone方法,C++也可以實現,呵呵,”虛擬建構函式”,參見<<More Effective C++>>Equals方法, 由於Java中對象只能由控制代碼表示,又沒有C++操作符重載的能力,所以這個來比較等價對象。C++中我們可以重載”==”操作符來判斷等價對象。Finalize方法,呵呵,類似於解構函式,但是千萬不要當成解構函式來用哦,這個方法何時調用不是你能把握的,取決於記憶體回收機制hashCode方法, STL沒有HashMap,HashTable等,但是java.util中有,所以…..剩餘的都是滿足線程和同步的方法,跟C++沒有可比性(3)      在java中數組也是對象,所以當你下標越界的時候,會收到一個異常。而C++數組顯然要比Java快點,因為他不檢查index。(4)      在java中,”123”這種字串也是對象,而在C++中確是const char*, 最讓人範錯的是那個字串結束符。但是java和c++對這種const char* 字元去有相同的最佳化,試試下面的代碼:String a = "123";                              String b = "123";if (a == b){   System.out.println("OK");} C++代碼:const char *p = "123";const char *q = "123";    if ( q == p)    {         std::cout<<"OK"<<std::endl;    }(5)     Java中所有的對象方法都是virtual, 除了聲明為final的方法。(6)     沒有操作符重載(7)     語言級的序列化機制, C++也可以實現,呵呵,看看C++高手對話中的,那位用模板模式來實現序列化。(8)     語言級的線程類極其配套互斥類等(9)     語言級的異常體系。C++中的異常少的可憐,就STL中那幾個,當然C++要的就是高效(10)  Java反射機制哎,從反射機制就可以看出來,Java和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.