C#和Java的對比

來源:互聯網
上載者:User

自從互連網出現以來,Java就成了許多開發人員的首選.而許多C++開發人員在較短的時間內轉移到了Java開發人員的隊伍中來. Java成功的開發和實現了許多高品質的多線程動畫, 遊戲, 以及分布的應用程式. 更重要的是,Java 語言是完全平台無關的.
被稱作Apllets(小應用程式)的Java程式在被下載到本地以前必須首先通過安全認證,這樣就避免了任何病毒鑽入使用者的電腦的企圖. 許多新的改進,諸如旋擺軟體包(swing package), Java2D API, 連網軟體包(java .net)在最初的Java開發包發布以後被加進了這種語言裡. 從Sun公司發布Java以來,它的許多競爭者開發了這種熱門語言的替代品,一些公司甚至在兩年以前就開始了.
現在一家無需更多介紹的公司--微軟已經發布了一種新的叫做微軟.NET的技術. .NET家族的一種主要的語言是C#或者說C-sharp. 這種語言是從Java/C++繼承而來的. 從我的對C#的六個月的技術上的經驗來說,我覺得C#或多或少與Java是相似的.但是C++的許多功能,比方說操作符重載(它在Java中已經被移去了)還存在於C#中.
Java程式能夠在安裝了Java虛擬機器或者JVM的任何平台上運行.但是.NET程式的平台要求安裝了通用語言運行庫或者稱做CLR. 它是所有.NET語言運行所需的運行庫.所以一種.NET語言能夠調用另一種.NET語言寫成的模組和函數. 更進一步的說,如果你學習了種像C#之類的語言,那麼你就很容易學習另一種.NET語言因為所有的.NET語言遵循微軟所謂的.NET Framework(架構). 這種架構包括了編寫和安裝健壯的.NET應用程式所必需的類庫.使用.NET你可以通過ASP.NET進行伺服器端的編程,這點非常像JAVA中的servlets.
就象Java中的Applets, C#引入了WinForms 和WebForms的概念.使用WinForms你可以設計基於Windows的應用程式而使用WebForms你能夠開發Web應用程式. 這點可以要麼通過C#編程或者是使用Visual Studio.NET這樣的開發環境工具來實現. 它包含了Visual C#,使用Visual C#你可以非常容易的編寫C#應用程式.
在我們使用Visual C++編程的時候,WinForms幾乎就是win32程式.用C++來開發這些程式是可能的.但是VC++給我們提供嚮導來簡化我們的開發過程.現在Visual C#也在做同樣的工作.因此如果你已經是一個VC++的程式員了,那麼你最好試一試VC#.
Java程式和C#程式的比較
我們應該比較一下用Java寫成的程式和C#的有什麼不同. 我們將討論兩個程式間主要的不同點.
Hello Java 程式
class Hello { // 類聲明
public static void main(String args[]) { // main 方法,進入點
System.out.println("Hello Java"); // 向控制台輸出Hello Java
}
}
Hello C# 程式
using System; // 調用System命名空間
class Hello { // 類聲明
public static void Main () { // main 方法, 進入點
console.writeLine("Hello C#"); // 向控制台輸出 Hello C#
}
}
在Java中, lang軟體包是自動引入的.在簡單的程式裡沒有必要引入這個包.但是在C#中,我們不得不在所有的程式裡調用System命名空間. 請記住控制台是System命名空間下的一個類. 試著運行一下上面的程式並查看它們的輸出結果.
Main方法
Java:你有可能編寫一個沒有main方法的Java程式,只要這個類是用來作為父類.但是只有類中包含有正確的Main方法的時候程式才能運行.
C#:沒有正確的Main方法就不可能編譯C#來源程式.如果main方法缺失了,那麼編譯器就會顯示一個錯誤訊息:程式'filename.exe'沒有定義進入點.
繼承
Java 和C#都不支援多重繼承而且都提供介面的概念作為多重繼承的替代品.但是C#在介面中包括了更進階的內容.請在本文末找出題為新增加的特點的內容.
操作符和控制流程語句
Java中出現的所有諸如算術,邏輯,自增和自減等操作符都可以在C#中找到. 而Java中的像if, else, if-else, for, do-while, while等控制流程語句C#統統支援. 但是C# 增加了C++中流行的goto語句.
異常處理
在C#中你可以重用try, catch, finally, throws 語句處理執行階段錯誤(通常也叫做異常).C# 中的異常處理過程除了一些小的不同以外幾乎與Java完全相同. C#中System.Exception命名空間是所有異常類的基類.
多線程
C#中多線程的應用比起Java來要容易得多.我們可以使用Monitor 和 Mutex類同步線程.
新增特點
索引,屬性和代理是C#中的新概念.索引幾乎與Java中的向量相同. 對其新特點的完全的討論已經超出了我們的範圍.但是我將盡量在這個網站的其它地方解釋它們. C#引入了Java所沒有的操作符重載的概念.但是Java和C#都支援方法重載.
讓我們回到對介面的討論,我們能夠驗證封裝括在介面中的方法是否是使用is 和 as 操作符實現的.當我們實現介面的時候能避免命名衝突.你甚至可以將兩個介面結合到一個中來,並在類中實現這個複合的介面,如下面的代碼所示:
using System;
public interface First {
void A();
void B();
}
public interface Second {
void C();
}
public interface Combined: First, Second { }
class Combineimple: Combined {
// 這裡是程式碼
// main方法
} }
而且C#在顯示編譯錯誤的時候還顯示它們的錯誤碼.你可以搜尋與SDK有關的線上文檔尋找和這個錯誤碼有關的內容並找出這個錯誤發生的原因的細節.

相關文章

聯繫我們

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