閱讀618 返回首頁    go 阿裏雲 go 技術社區[雲棲]


c++ c# java 區別小匯

托管與非托管代碼

托管代碼 ,managed  code,是由公共語言運行環境(而不是直接由操作係統)執行的代碼。公共語言運行庫會提供例如垃圾自動回收、運行庫類型檢查和安全支持等。
非托管代碼,直接由操作係統運行。
java、c#都是托管代碼;c++不是。再如,COM 組件、ActiveX 接口和 Win32 API 函數都是非托管代碼。
微笑為什麼托管代碼在企業中用的多?
托管代碼由虛擬機執行,它可以幫程序員做許多事情,如數組越界檢查、內存回收。人是容易犯錯的動物,所以寫cpp代碼易犯一些隱蔽的錯誤,如前麵講的數組越界、內存泄露,且這些錯誤排查起來很困難。因此為了追求開發效率,損失一些執行效率也可以接受。

main 函數
c++。全局函數。
c#。Main首字母大寫,必須是一個類的成員函數。

數組
c++. int arr[size].
c#.   int [] arr=new int[size].
java同c#。

類定義
C++。結尾有分號。
c#。結尾無分號。

this關鍵字
c++。this->成員。
c#。this.成員。

bool
c#。整數與bool不能相互轉換。
java。用的是boolean關鍵字。整數與boolean不能相互轉換。

注釋
c#。支持 #region 和 ///<summary>注釋。
java。支持/**   */的注釋,用於IDE提示、生成JavaDoc。

反射
c++。隻有它不支持。

泛型
c++。泛型,也就是template隨便用。參見 https://blog.csdn.net/chuchus/article/details/39696117 。
java。泛型是靠擦除機製實現的。所以

語法糖
java。

const 與 final
c++。const 修飾的對象不可更改。
java。final僅約束變量的引用不變,而非所引用對象的內容不變。因此,java沒有c++中“常函數”的機製。

多態
c++。擁有virtual關鍵字是多態的必要條件。
java。多態是主動的行為。@Override 聲明可要可不要。

友元
c++。隻有它有。

迭代器
c++。iterator是內部類,即vector、deque等分別擁有自己的iterator。
java。iterator是Iterable接口中的函數。容器類都實現了這個接口。

異常
cpp。沒有finally關鍵字。它表示無論try{}中是否有異常拋出,最終都會執行的動作。

運算符重載
c++。可以重載為友元,也可以重載為成員函數。
java。太弱了,隻能重載“+”號。

形參默認值
c++。支持。
java。不支持。

最後更新:2017-04-03 05:39:25

  上一篇:go 操作係統結構(二)
  下一篇:go Spring4.0MVC學習資料,簡單學習教程(一)