小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

java與c 、c++、c#的關(guān)系

 何必清楚 2012-02-28

下表包含 C++ C# 功能之間的重要比較。如果您是一位 C++ 程序員,此表將為您提供這兩種語言的最重要差異。

注意   C++ C# 項目派生于不同的項目模型。有關(guān) C++ C# 項目之間差異的信息,請參見項目中的項管理和使用解決方案資源管理器。
功能 參考主題
繼承:類只能繼承一個基類中的實現(xiàn)。另外,類或接口可以實現(xiàn)多個接口。

 
數(shù)組:聲明 C# 數(shù)組和聲明 C++ 數(shù)組的語法不同。在 C# 中,“[]”標(biāo)記出現(xiàn)在數(shù)組類型的后面。
bool
類型:bool 類型和其他類型(特別是 int)之間沒有轉(zhuǎn)換。

long
類型:在 C# 中,long 數(shù)據(jù)類型為 64 位,而在 C++ 中為 32 位。
struct
類型:在 C# 中,類和結(jié)構(gòu)在語義上不同。struct 是值類型,而 class 是引用類型。

 
switch
語句:與 C++ 中的 switch 語句不同,C# 不支持從一個 case 標(biāo)簽貫穿到另一個 case 標(biāo)簽。
delegate
類型:委托與 C++ 中的函數(shù)指針基本相似,但前者具有類型安全,是安全的。
從派生類調(diào)用重寫基類成員。
 
使用 new 修飾符顯式隱藏繼承成員。
聲明重寫方法需要有 override 關(guān)鍵字。
預(yù)處理器指令用于條件編譯。C# 中不使用頭文件。
異常處理:使用 finally 語句。

 
C#
運算符:C# 支持其他運算符,如 is typeof。它還引入了某些邏輯運算符的不同功能。
 
關(guān)鍵字 extern 的使用。
關(guān)鍵字 static 的使用。
在構(gòu)造基類上替代 C++ 初始化列表的方法。

C#
程序的常規(guī)結(jié)構(gòu):命名空間、類、結(jié)構(gòu)、委托和枚舉。
Main
方法和 C++ 中的 main 函數(shù)的聲明方式不同。
方法參數(shù):C# 支持 ref out 參數(shù),這兩個參數(shù)取代指針通過引用傳遞參數(shù)。
 
C# 中只在不安全模式下才使用指針。 unsafe
C# 中以不同的方式執(zhí)行重載運算符。

字符串:C# 字符串不同于 C++ 字符串。
string
foreach
關(guān)鍵字使您得以循環(huán)訪問數(shù)組和集合。
foreach, in
C#
中沒有全局方法和全局變量:方法和變量必須包含在類型聲明(如 class struct)中。

C#
中沒有頭文件和 #include 指令:using 指令用于引用其他未完全限定類型名的命名空間中的類型。

C#
中的局部變量在初始化前不能使用。

析構(gòu)函數(shù):在 C# 中,不能控制析構(gòu)函數(shù)的調(diào)用時間,原因是析構(gòu)函數(shù)由垃圾回收器自動調(diào)用。

構(gòu)造函數(shù):與 C++ 類似,如果在 C# 中沒有提供類構(gòu)造函數(shù),則為您自動生成默認(rèn)構(gòu)造函數(shù)。該默認(rèn)構(gòu)造函數(shù)將所有字段初始化為它們的默認(rèn)值。
 
C#
不支持位域。 C++ 位域

C#
的輸入/輸出服務(wù)和格式設(shè)置依賴于 .NET Framework 的運行時庫。

 
C# 中,方法參數(shù)不能有默認(rèn)值。如果要獲得同樣的效果,請使用方法重載。

 

 

 

1.繼承:C++支持多繼承,C#類只能繼承一個基類中的實現(xiàn)但可以實現(xiàn)多個接口。
2.
數(shù)組:聲明 C# 數(shù)組和聲明 C++ 數(shù)組的語法不同。在 C# 中,“[]”標(biāo)記出現(xiàn)在數(shù)組類型的后面。
3.
數(shù)據(jù)類型:在C++bool類可以與整型轉(zhuǎn)換,但C#bool 類型和其他類型(特別是 int)之間沒有轉(zhuǎn)換。long 類型:在 C# 中,long 數(shù)據(jù)類型為 64 位,而在 C++ 中為 32 位。
4.struct
類型:在 C# 中,類和結(jié)構(gòu)在語義上不同。struct 是值類型,而 class 是引用類型。
5.switch
語句:與 C++ 中的 switch 語句不同,C# 不支持從一個 case 標(biāo)簽貫穿到另一個 case 標(biāo)簽。 
6.delegate
類型:委托與 C++ 中的函數(shù)指針基本相似,但前者具有類型安全,是安全的。
7.
從派生類調(diào)用重寫基類成員。 base
8.
使用 new 修飾符顯式隱藏繼承成員。
9.
重寫方法需要父類方法中用virtual聲名,子類方法用override 關(guān)鍵字。
10.
預(yù)處理器指令用于條件編譯。C# 中不使用頭文件。 C# 預(yù)處理器指令
11.
異常處理:C#中引入了 finally 語句,這是C++沒有的。
12.C#
運算符:C# 支持其他運算符,如 is typeof。它還引入了某些邏輯運算符的不同功能。
13. static
的使用,static方法只能由類名調(diào)用,改變static變量。
14.
在構(gòu)造基類上替代 C++ 初始化列表的方法。
15.Main
方法和 C++ Java中的 main 函數(shù)的聲明方式不同,Main而不能用main
16.
方法參數(shù):C# 支持 ref out 參數(shù),這兩個參數(shù)取代指針通過引用傳遞參數(shù)。 
17.
C# 中只能在unsafe不安全模式下才使用指針。
18.
C# 中以不同的方式執(zhí)行重載運算符。
19.
字符串:C# 字符串不同于 C++ 字符串。
20.foreach:C#
VB中引入了foreach關(guān)鍵字使得以循環(huán)訪問數(shù)組和集合。
21.C#
中沒有全局方法和全局變量:方法和變量必須包含在類型聲明(如 class struct)中。
22.C#
中沒有頭文件和 #include 指令:using 指令用于引用其他未完全限定類型名的命名空間中的類型。
23.C#
中的局部變量在初始化前不能使用。
24
析構(gòu)函數(shù):在 C# 中,不能控制析構(gòu)函數(shù)的調(diào)用時間,原因是析構(gòu)函數(shù)由垃圾回收器自動調(diào)用。 析構(gòu)函數(shù)
25
構(gòu)造函數(shù):與 C++ 類似,如果在 C# 中沒有提供類構(gòu)造函數(shù),則為您自動生成默認(rèn)構(gòu)造函數(shù)。該默認(rèn)構(gòu)造函數(shù)將所有字段初始化為它們的默認(rèn)值。
26.
C# 中,方法參數(shù)不能有默認(rèn)值。如果要獲得同樣的效果,需使用方法重載。

 

 

 

C++JavaC#的語法比較


 

染色體 1:純對象導(dǎo)向語言
C#
Java 都是純對象導(dǎo)向語言,C++ 非純對象導(dǎo)向語言。

染色體 2:強制型態(tài)檢查
C#
Java 都強制進行型態(tài)檢查,C++ 則較寬松。

染色體 3:宏
C#
Java 都不支持宏,C++ 支持宏。

染色體 4Template
C#
Java 都不支持 template,C++ 支持 template。

染色體 5:多重繼承
C#
Java 都不支持多重繼承,且都支持 interface,C++ 支持多重繼承。

染色體 6:指針
C#
Java 都不支持指針,C++ 支持指針。(不過,C# 允許在 unsafe code 內(nèi)使用指針)

染色體 7:內(nèi)存管理
C#
Java 都支持垃圾收集。C++ 不支持垃圾收集。

染色體 8:虛擬機器
C#
Java 都需要虛擬機器,C++ 不需要虛擬機器。Java 的執(zhí)行檔是中間碼,叫做 bytecode,透過 Java Runtime Environment(即 JRE)來執(zhí)行;C# 的執(zhí)行檔也是中間碼,叫做 managed code,透過 NGWS Runtime 來執(zhí)行。除了 Java,你也可以用其它程序語言(例如 Ada、Python)來作出 bytecode。除了 C#,你也可以用其它程序語言(例如 Visual Basic、C++)來作出 managed code。

染色體 9Namespace
C#
Java 都支持階層式的 namespace,但 C++ 只支持單層的 namespace。Java namespace 稱為 package,C# namespace 就稱為 namespace。Java C# 都使用「.」當(dāng)作 namespace 的符號,而 C++ 使用「::」。

染色體 10Platform-Independent Type
C#
Java 都使用 Platform-Independent Type,C++ type 會受到平臺的影響。

染色體 11:使用 Wrapper 包裝基本型態(tài)
C#
Java 都支持將基本型態(tài)包裝成對象,在 Java 叫做 wrapper,在 C# 則是叫做 box

染色體 12boolean != integer
C#
Java 都不允許把整數(shù)當(dāng)布爾值用,C++ 則允許。

染色體 13access modifier
C#
Java 都支持四種等級的 access modifier,包括 public、protected、privatedefault/internal;C++ 只支持 publicprotected、private。Java default(不寫)指的就是只針對同一個 package 開放,正好就是 C# internal

染色體 14:變量初始化
C#
Java 都規(guī)定不可使用未初始化的變量,C++ 則完全沒有這方面的限制。Java C# 的編譯器都會主動幫未初始化的 field/data member 設(shè)定初始值,C++ 則不然。

染色體 15:轉(zhuǎn)型
C#
Java 都規(guī)定基本型態(tài)和 reference 型態(tài)不能互轉(zhuǎn)。

染色體 16:數(shù)組邊界檢查
C#
Java 都會主動進行數(shù)組邊界檢查,C++ 則不然

染色體 17:呼叫 Native Code
C#
Java 都支持呼叫 native code。Java 透過 JNIJava Native Interface);C# 透過 PInvokePlatform Invocation Service

染色體 18Metadata
C#
Java 的中間碼都包含有類別的 metadata,而 C 語言則是獨立在 header file。

染色體 19:中間碼指令
C#
IL 中間碼指令和 Java bytecode 指令非常類似,有的甚至一樣。

染色體 20:例外處理
C#
Java 都支持 try/catch/finally,但 C++ 只支持 try/catch。

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多