C#與JAVA之比較

來源:互聯網
上載者:User

C#是微軟用來和Java抗衡的武器,因為二者在很大程度上有著驚人的相似,儘管如此,兩者不同的地方也很多,所謂“於細微處見差異”。那麼兩者的相似和區別都在什麼地方呢?我們從今天開始,會從各個角度來對比C#和Java的特點,希望能對正在學習、使用C#的朋友有所協助。

1、C#和.NET平台的概貌

2000年6月,微軟發布C#語言和.NET平台。C#語言是一種強型別的,物件導向的語言,它具有文法簡單、表達力強的特點,而.NET平台則是構成微軟的“.NET計劃”的基石。

.NET平台的核心包括兩方面,一方面就是著名的通用語言運行機(Common Language Runtime),雖然這個名詞起得晦澀了點,不過大家可以拿它和Java的虛擬機器來作比較,二者完成的任務大致相同;另一方面就是一大堆通用函數庫,這些庫函數可以被多種語言調用,並且通過編譯都產生一種共同的中繼語言(Intermediate Language),這種語言也可以拿Java的位元組碼來類比,雖然完成的方式有些不一樣。

2、C#和Java

下面簡單地把C#和Java的相似處列出來,雖然在這裡我們重點討論的是C#和Java的不同點,但是瞭解一下二者的相同之處也是很有必要的。

二者都編譯成跨平台的、跨語言的代碼,並且代碼只能在一個受控制的環境中運行

自動回收垃圾記憶體,並且消除了指標(在C#中可以使用指標,不過必須註明unsafe關鍵字)

都不需要標頭檔,所有的代碼都被“包(package)”限制在某個範圍內,並且因為沒有標頭檔,所以消除了類定義的循環相依性

所有的類都是從對象派生出來,並且必須使用New關鍵字分配記憶體

用對象加鎖的方式來支援多線程

都具有介面(interface)的概念

內部類

繼承類的時候不會以某種特定的存取權限來繼承;

沒有全域函數或者常量,一切必須屬於類;

數組或者字串都內建長度計算和邊界檢查;

只使用“.”操作符,沒有“-$#@62;”和“::”;

“null”、“boolean”和“bool”成為了關鍵字;

任何變數均在使用前進行初始化;

不能使用整數來返回到if條件陳述式中,必須使用布爾值;

“Try”模組後可以有“finally” ;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.