欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C#與JAVA的比較
  
                                                         ASP.NET基礎教程:C#與JAVA的比較
        
        簡(jiǎn)單地說(shuō),它們不是一種語(yǔ)言,語(yǔ)法有差別,編程時(shí)具體用到的類(lèi)庫或者函數庫也不一樣。

  雖然它們不是一種語(yǔ)言,不過(guò)它們卻也有所聯(lián)系。廣泛地說(shuō),C可以看作其他三種語(yǔ)言的源語(yǔ)言,因為其他三種語(yǔ)言幾乎都是從C而來(lái)的,無(wú)論從數據類(lèi)型還是控制語(yǔ)句看,其他三種語(yǔ)言都有從C得來(lái)的跡象。

  其中C++則一般看作是對C語(yǔ)言的擴展。因為C語(yǔ)言沒(méi)有面向對象的語(yǔ)法結構,而當時(shí)業(yè)界又迫切需要面向對象的編程特性,所以貝爾實(shí)驗室的開(kāi)發(fā)者就為C添加了面向對象的結構?,F在C++已經(jīng)不只是C的擴展了,它已經(jīng)完全可以被看作一種新的編程語(yǔ)言。雖然C的特性以及庫函數仍然被C++支持,不過(guò)C++擁有自己的獨立的類(lèi)庫體系,功能相當強大。

 ?。剩幔觯嵴Z(yǔ)言是一種完全的面向對象語(yǔ)言,雖然它的底層(運行時(shí)庫)是用C語(yǔ)言開(kāi)發(fā)的,可是并不依賴(lài)于C。因為Java的運行是在運行時(shí)庫的支持下進(jìn)行的,所以運行效率比起可以更接近底層的C/C++來(lái)說(shuō)效率會(huì )有所影響,不過(guò)Java的類(lèi)庫采用很好的設計理念設計,非常好用,也非常實(shí)用,已經(jīng)成為業(yè)界的一種標準開(kāi)發(fā)語(yǔ)言。它的跨平臺的特性尤其讓很多開(kāi)發(fā)者歡迎,你只需要開(kāi)發(fā)一次就能在所有安裝了Java運行時(shí)庫的系統上運行。Java發(fā)展了十幾年了,可以應用領(lǐng)域非常之廣泛,Web開(kāi)發(fā)有JSP,J2EE,桌面領(lǐng)域現在有JavaFX。

 ?。茫J俏④涢_(kāi)發(fā)的一種編程語(yǔ)言,語(yǔ)法類(lèi)似Java,幾乎就是從Java的翻版。運行原理和Java也類(lèi)似,也是通過(guò)運行時(shí)庫的支持運行。不過(guò)支持的平臺還很有限。JAVA幾乎被所有平臺支持,而C#目前只被Windows和Linux支持,Windows下的支持當然是由微軟自己開(kāi)發(fā)的,而Linux下的支持則有MONO支持。實(shí)際上,MONO也是把C#應用轉化為JAVA應用而已,所以本質(zhì)上,C#仍然只是被微軟自己的操作系統支持。應用平臺受到限制,是它最大的缺點(diǎn)。

 ?。茫茫膬?yōu)點(diǎn)在于與底層比較接近,可以控制的粒度更加精細,是開(kāi)發(fā)系統級應用的最佳選擇。關(guān)于缺點(diǎn),我想正是源于其優(yōu)點(diǎn),因為它們能控制的編程元素粒度精細,所以編程比較困難,煩瑣,容易出錯。

 ?。剩幔觯岷停茫6急容^高級,可以看作高級語(yǔ)言的高級語(yǔ)言,優(yōu)點(diǎn)是開(kāi)發(fā)容易,但運行效率不如更為底層的C/C++。

  具體選擇使用的時(shí)候,可以根據實(shí)際的項目需要選擇。運行效率要求高的,底層控制要求高的用C/C++,否則可以選擇Java或C#;跨平臺的要求高的可以用Java。

  關(guān)于跨平臺,C/C++也是很好的語(yǔ)言,因為所有平臺都支持,不同的是,不同平臺支持的實(shí)現不同,類(lèi)庫不同,要編寫(xiě)跨平臺的程序,需要選擇跨平臺的類(lèi)庫,如標準類(lèi)庫,如果標準類(lèi)庫的支持不夠也只需要附加編寫(xiě)一個(gè)跨平臺的支持類(lèi)庫。

  幾種語(yǔ)言?xún)热荻己芏?,在這里就不詳細列舉了,要學(xué)好每一種都需要花費相當大的精力,祝你能有所成就!
 
        C#與JAVA的相同之處:由于C#與JAVA都是基于C++發(fā)展起來(lái)的,因此二者之間具有很多相似之處,具體如下:

  1、C#和JAVA語(yǔ)言的編譯結果是獨立于計算機和編程語(yǔ)言的,可執行文件可以在受管理的執行

  環(huán)境中執行;

  2、C#和JAVA語(yǔ)言都是采用了自動(dòng)的垃圾回收機制;

  3、C#和JAVA語(yǔ)言都取消了指針操作;

  4、C#和JAVA語(yǔ)言都沒(méi)有頭文件;

  5、C#和JAVA語(yǔ)言都只支持單重繼承,要實(shí)現與多重繼承類(lèi)似的功能,必須通過(guò)接口來(lái)實(shí)現;

  6、類(lèi)都是從Object類(lèi)派生而來(lái),類(lèi)的對象通過(guò)關(guān)鍵字new生成;

  7、C#和JAVA語(yǔ)言都支持線(xiàn)程;

  8、C#和JAVA語(yǔ)言都沒(méi)有全局變量和全局函數,所有的變量和函數都屬于某個(gè)類(lèi)所有;

  9、C#和JAVA語(yǔ)言都支持對數組和字符串邊界的嚴格檢查,不會(huì )出現邊界溢出的情況;

  10、C#和JAVA語(yǔ)言都使用“.”操作符,不再使用“->”和“::”操作符;

  11、C#和JAVA語(yǔ)言都將null和bool作為關(guān)鍵字;

  12、C#和JAVA語(yǔ)言中所有的值都必須先初始化后才能使用;

  13、C#和JAVA語(yǔ)言中的if語(yǔ)句都不允許采用整數作為判斷條件;

  14、C#和JAVA語(yǔ)言中的try語(yǔ)句塊都可以后接finally語(yǔ)句塊。

  C#與JAVA的不同之處:

  盡管C#和JAVA有很多相同之處,但是由于二者是兩家不同公司開(kāi)發(fā)的高級程序設計語(yǔ)言,它們又相互獨立,

  自成體系,各自具有一些自己特有的特點(diǎn),下面將C#與JAVA之間的不同之處如下:

  1、屬性

  對于那些經(jīng)常使用快速開(kāi)發(fā)工具,如Delphi或者Visual Basic的開(kāi)發(fā)人員來(lái)說(shuō),屬性是一個(gè)非常熟悉的概念。

  一般來(lái)說(shuō),通過(guò)getXXX可以讀取屬性的值,而通過(guò)setXXX可以設置屬性的值。

  JAVA中比較常見(jiàn)的屬性操作語(yǔ)句: foo.setSize(foo.getSize()+1); label.getFont().setBold(true);

  c#中比較常見(jiàn)的屬性操作語(yǔ)句: foo.size++; label.font.bold=true;

  很明顯,上述的屬性設置方式較JAVA來(lái)說(shuō)更為簡(jiǎn)潔,可主讀性也更強。這充分體現了C#簡(jiǎn)單的特點(diǎn)。

  JAVA對于屬性的定義:public int getSize(){ return size; } public void setSize(int value){ size=value; }

  c#對于屬性的定義進(jìn)行了簡(jiǎn)化:public int Size{ get{ return size; } set{size=value; }}

  2、index

  C#提供index來(lái)給對象加上索引的功能,從而用與處理數組類(lèi)似的方式來(lái)處理對象,JAVA語(yǔ)言則不支持index

  C#中定義index的典型方式如下:

  public Story this[int index]

  {

  get{return stories[index]; }

  set{

  if(value!=null){

  stories[index]=value

  }

  }

  3、delegate :可以認為是一種類(lèi)型安全、面向對象的函數指針。

  C#使有delegate可以通過(guò)一個(gè)名字訪(fǎng)問(wèn)不同的函數,它實(shí)現和JAVA中的interface類(lèi)似的功能,但是它比interface更為好用。

  4、event

  C#提供對event的直接支持,它通過(guò)delegate和event關(guān)鍵字實(shí)現對事件的處理。event關(guān)鍵字隱藏所有delegate方法,運算符“+=”和“-+”允許程序員自由加入或者刪除時(shí)間處理程序。

  5、enum:枚舉用于指定一系列的對象。

  C#通過(guò)如下語(yǔ)句來(lái)定義和使用枚舉:

  定義:public enum Direction{North,East,West,South};

  使用:Direction wall=Direction.North;

  JAVA不直接支持枚舉,如果要實(shí)現和C#相類(lèi)似的功能,必須先定義一個(gè)類(lèi)

  public class Direction{

  public final static int NORTH=1;

  public final static int EAST=2;

  public final static int WEST=3;

  public final static int SOUTH=4; }

  在定義了Direction類(lèi)后,JAVA可以通過(guò)引用類(lèi)中的值來(lái)使用枚舉:

  int wall= Direction.NOTRH;

  6、foreach語(yǔ)句

  C#提供了標準的for循環(huán),同時(shí)還提供了foreach語(yǔ)句(從VB中引入)來(lái)循環(huán)處理集合中的元素。

  JAVA遍歷集合中的所有元素的典型處理方式如下:

  while(!collection.isEmpty())

  {

  Object o=collection.get();

  connection.next();

  …

  }

  C#遍歷集合中的所有元素:foreach(object o in collection){…}

  7、統一數據類(lèi)型:

  大多數的高級程序設計語(yǔ)言都有基本數據類(lèi)型,如整型、浮點(diǎn)類(lèi)型等。同時(shí),為了更好地滿(mǎn)足實(shí)際的需要,對不同的數據類(lèi)型有不同的處理方式,顯然,如果能夠對簡(jiǎn)單數據類(lèi)型的處理和對復雜數據類(lèi)型的處理結合在一起,并用一致的方式加以處理的話(huà),無(wú)疑會(huì )大大提升應用程序設計的效率,增強程序設計的靈活性。

  JAVA語(yǔ)言在處理基本數據類(lèi)型的時(shí)候也采取分別處理的策略,但是在基本數據類(lèi)型的基礎上提供了一系列封裝這些基本數據類(lèi)型的類(lèi),例如:整型(int)被類(lèi)Integer所封裝,雙精度浮點(diǎn)(double)被類(lèi)Double封裝。

  C#提供了一種和JAVA不同的方式來(lái)實(shí)現數據類(lèi)型的統一。事實(shí)上,在c#中,即使是int這樣的簡(jiǎn)單數據類(lèi)型在C#內部也是通過(guò)一個(gè)結構體Int32來(lái)實(shí)現的,在C#中,可以這樣認為,int只是結構體Int32的一個(gè)別名。由于C#中的結構體也繼承自類(lèi)Object,這樣,Object類(lèi)中定義的方法,各個(gè)結構體也擁有,于是,在C#中可以通過(guò)如下的方式來(lái)操作整數:int I=5; System.Console.WriteLine(i.ToString());

  8、操作符重載

  通過(guò)操作符重載可以用一種比較自然的方式來(lái)操縱各種數據類(lèi)型,從而大大提升程序的可讀性和靈活性。C#中的“==”操作符在Object類(lèi)中進(jìn)行了定義,在Object中定義的==操作符通過(guò)比較兩個(gè)值的引用來(lái)獲得最后的結果。如果使有和集合相關(guān)的類(lèi),則必須在這樣的類(lèi)中實(shí)現ICompar接口,這個(gè)接口中定義了一個(gè)方法CompareTo,該方法返回兩個(gè)對象的比較結果,在此基礎上,可以進(jìn)一步定義各個(gè)實(shí)現比較的操作符,如

  “>”、“<”、“>=”、“<=”等。事實(shí)上,數字類(lèi)型(int、long等)可以直接使用這些比較操作符,它們的內部都實(shí)現了ICompare接口。

  9、多態(tài)性

  虛似方法提供了多態(tài)性的技持。多態(tài)意味著(zhù)派生類(lèi)可以定義一個(gè)和基類(lèi)中同名的方法。盡管JAVA和C#都支持多態(tài)性,但是它們的具體實(shí)現方式還是有一定的差別。

  在JAVA語(yǔ)言中,默認情況下,基類(lèi)的對象可以直接調用派生類(lèi)中的虛似方法,在C#語(yǔ)言中,基類(lèi)要調用派生類(lèi)中的虛似方法必須通過(guò)virtual關(guān)鍵字來(lái)實(shí)現。同時(shí),在C#語(yǔ)言中,一個(gè)方法要重載基類(lèi)中的同名方法,還必須通過(guò)關(guān)鍵字override來(lái)實(shí)現。在C#中實(shí)現多態(tài)的典型程序如下:

  Class B{ public virtual void foo{}}

  Class D:B{ public overried void foo(){}}

  以上只是簡(jiǎn)單地比較了C#和JAVA之間的異同,事實(shí)上,這二者之間的比較遠不止上面所介紹的內容,要學(xué)好這兩種語(yǔ)言,需要經(jīng)過(guò)大量的實(shí)踐工作,在實(shí)踐中區分開(kāi)兩種語(yǔ)言的共同點(diǎn)和不同點(diǎn)。
現在的面向對象的語(yǔ)言大多數都源自C++,java去掉了C++中那些復雜,實(shí)用性低的語(yǔ)言特性,達到了一個(gè)不錯的平衡。

C#是在java如日中天的時(shí)候產(chǎn)生了,因此它不可避免的引入了java中絕大多數優(yōu)秀的元素。

因此但從語(yǔ)言特性上,兩種語(yǔ)言不會(huì )出現一種能實(shí)現,而一種無(wú)法實(shí)現的。

即便大型的應用,也是都可以實(shí)現,只不過(guò)可能在特定的方面,一種要比另一種做的好。

就算是所謂的跨平臺。假如微軟能推出linux版本的CLR和.net framework。c#一樣可以跨,因為它和java都是擁有底層托管機制的。

非要說(shuō)語(yǔ)言差別,下面基本應該全了,不過(guò)這些在另一種中都有替代實(shí)現方法。
1.屬性:
java中定義和訪(fǎng)問(wèn)均要用get和set方法,可以不成對出現。
c#中是真正的屬性,定義時(shí)get和set必須同時(shí)出現,房問(wèn)時(shí)用.號即可。不用get,set

2.對象索引
就是對象數組
public Story this [int index] {

3.C#中,不用任何范圍修飾符時(shí),默認的是protect,因而不能在類(lèi)外被訪(fǎng)問(wèn).

4.因為JAVA規定,在一個(gè)文件中只能有一個(gè)public類(lèi),而且這個(gè)類(lèi)的名稱(chēng)必須與文件名一模一樣,這是一個(gè)區別

5.在C#中,它是以Main方法來(lái)定位入口的.如果一個(gè)程序中沒(méi)有一個(gè)名為Main的方法,就會(huì )出"找不到入口的錯誤".不要把Main寫(xiě)成main喲

6.C#預定義的簡(jiǎn)單數據類(lèi)型比Java多。例如,C#有unit,即無(wú)符號整數

7.忘掉Java中的static final修飾符。在C#中,常量可以用const關(guān)鍵詞聲明
C#的設計者還增加了readonly關(guān)鍵詞,readonly域只能通過(guò)初始化器或類(lèi)的構造函數設置
8.公用類(lèi)的入口點(diǎn):c#是可以對Main進(jìn)行重載(java中是main),允許有int返回值和空參數的Main

9.在Java中,switch語(yǔ)句只能處理整數。但C#中的switch語(yǔ)句不同,它還能夠處理字符變量。請考慮下面用switch語(yǔ)句處理字符串變量的C#代碼

10.C#沒(méi)有>>>移位操作符

11.goto關(guān)鍵詞:
Java不用goto關(guān)鍵詞。在C#中,goto允許你轉到指定的標簽。不過(guò),C#以特別謹慎的態(tài)度對待goto,比如它不允許goto轉入到語(yǔ)句塊的內部。在Java中,你可以用帶標簽的語(yǔ)句加上break或continue取代C#中的goto。

12.int[] x = { 0, 1, 2, 3 };
int x[] = { 0, 1, 2, 3 };
但在C#中,只有第一行代碼合法,[]不能放到變量名字之后。

13.與Java不同的是,C#允許為名稱(chēng)空間或者名稱(chēng)空間中的類(lèi)指定別名:
using TheConsole = System.Console;

14.在Java中,包的名字同時(shí)也是實(shí)際存在的實(shí)體,它決定了放置.java文件的目錄結構。在C#中,物理的包和邏輯的名稱(chēng)之間是完全分離的
.NET中包的實(shí)體稱(chēng)為程序集(Assembly)。每一個(gè)程序集包含一個(gè)manifest結構。manifest列舉程序集所包含的文件,控制哪些類(lèi)型和資源被顯露到程序集之外,并把對這些類(lèi)型和資源的引用映射到包含這些類(lèi)型與資源的文件。程序集是自包含的,一個(gè)程序集可以放置到單一的文件之內,也可以分割成多個(gè)文件。.NET的這種封裝機制解決了DLL文件所面臨的問(wèn)題,即臭名昭著(zhù)的DLL Hell問(wèn)題。

15.在Java中,java.lang包是默認的包,C#中不存在默認的包

16.C#中的訪(fǎng)問(wèn)修飾符與Java中的基本對應,但多出了一個(gè)internal。簡(jiǎn)而言之,C#有5種類(lèi)型的可訪(fǎng)問(wèn)性,如下所示:

public:成員可以從任何代碼訪(fǎng)問(wèn)。
protected:成員只能從派生類(lèi)訪(fǎng)問(wèn)。
internal:成員只能從同一程序集的內部訪(fǎng)問(wèn)。
protected internal:成員只能從同一程序集內的派生類(lèi)訪(fǎng)問(wèn)。
private:成員只能在當前類(lèi)的內部訪(fǎng)問(wèn)。

17.由于C#中不存在final關(guān)鍵詞,如果想要某個(gè)類(lèi)不再被派生,你可以使用sealed關(guān)鍵詞

18.與Java不同,C#中的接口不能包含域(Field)。
另外還要注意,在C#中,接口內的所有方法默認都是公用方法。在Java中,方法聲明可以帶有public修飾符(即使這并非必要),但在C#中,顯式為接口的方法指定public修飾符是非法的。例如,下面的C#接口將產(chǎn)生一個(gè)編譯錯誤。

19.C#中的is操作符與Java中的instanceof操作符一樣,兩者都可以用來(lái)測試某個(gè)對象的實(shí)例是否屬于特定的類(lèi)型。在Java中沒(méi)有與C#中的as操作符等價(jià)的操作符。as操作符與is操作符非常相似,但它更富有“進(jìn)取心”:如果類(lèi)型正確的話(huà),as操作符會(huì )嘗試把被測試的對象引用轉換成目標類(lèi)型;否則,它把變量引用設置成null。

20.C#仍舊保留了C++的內存手工管理方法,它適合在速度極端重要的場(chǎng)合使用,而在Java中這是不允許的

21.在C#中,所有的異常都從一個(gè)名為Exception的類(lèi)派生

22.枚舉器即enum類(lèi)型(java無(wú)),把它作為一個(gè)變量值的類(lèi)型使用,從而把變量可能的取值范圍限制為枚舉器中出現的值。

23.結構(Struct)與類(lèi)很相似,而結構是一種值類(lèi)型,它存儲在棧中或者是嵌入式的,結構可以實(shí)現接口,可以象類(lèi)一樣擁有成員,但結構不支持繼承

24.屬性聲明語(yǔ)法的第一部分與域聲明很相似,第二部分包括一個(gè)set過(guò)程和/或一個(gè)get過(guò)程

25.傳值方式:
在java中簡(jiǎn)單數據類(lèi)型的值傳參時(shí),都以傳值方式;
在c#中如果加ref則會(huì )以引用的方式傳值(方法內部改變該參數,則外部變量一起跟著(zhù)變);
加out與ref基本相同,但out不要求參數一定要初始化.

26.c#保留了指針。unsafe

27.代理:代理(delegate)可以看作C++或者其他語(yǔ)言中的函數指針
代理用來(lái)封裝可調用方法。你可以在類(lèi)里面編寫(xiě)方法并在該方法上創(chuàng )建代理,此后這個(gè)代理就可以被傳遞到第二個(gè)方法。這樣,第二個(gè)方法就可以調用第一個(gè)方法。
代理是從公共基類(lèi)System.Delegate派生的引用類(lèi)型。定義和使用代理包括三個(gè)步驟:聲明,創(chuàng )建實(shí)例,調用。代理用delegate聲明語(yǔ)法聲明。
 

C#、Java之比較 很多人說(shuō)C#是微軟用來(lái)和Java抗衡的武器,因為二者在很大程度上有著(zhù)驚人的相似

,盡管如此,兩者不同的地方也很多,所謂“于細微處見(jiàn)差異”。那么兩者的相似和區

別都在什么地方呢?我們從今天開(kāi)始,會(huì )從各個(gè)角度來(lái)對比C#和Java的特點(diǎn),希望能對

1、C#和.NET平臺的概貌
2000年6月,微軟發(fā)布C#語(yǔ)言和.NET平臺。C#語(yǔ)言是一種強類(lèi)型的,面向對象的語(yǔ)言
,它具有語(yǔ)法簡(jiǎn)單、表達力強的特點(diǎn),而.NET平臺則是構成微軟的“.NET計劃”的基石
。
.NET平臺的核心包括兩方面,一方面就是著(zhù)名的通用語(yǔ)言運行機(Common Language
Runtime),雖然這個(gè)名詞起得晦澀了點(diǎn),不過(guò)大家可以拿它和Java的虛擬機來(lái)作比較,
二者完成的任務(wù)大致相同;另一方面就是一大堆通用函數庫,這些庫函數可以被多種語(yǔ)
言調用,并且通過(guò)編譯都產(chǎn)生一種共同的中間語(yǔ)言(Intermediate Language),這種語(yǔ)
言也可以拿Java的字節碼來(lái)類(lèi)比,雖然完成的方式有些不一樣。

2、C#和Java
        下面簡(jiǎn)單地把C#和Java的相似處列出來(lái),雖然在這里我們重點(diǎn)討論的是C#和Java的 
不同點(diǎn),但是了解一下二者的相同之處也是很有必要的。 
二者都編譯成跨平臺的、跨語(yǔ)言的代碼,并且代碼只能在一個(gè)受控制的環(huán)境中運行
自動(dòng)回收垃圾內存,并且消除了指針(在C#中可以使用指針,不過(guò)必須注明unsafe 關(guān)鍵字)都不需要頭文件,所有的代碼都被“包(package)”限制在某個(gè)范圍內,并且因為沒(méi)有頭文件,所以消除了類(lèi)定義的循環(huán)依賴(lài)所有的類(lèi)都是從對象派生出來(lái),并且必須使用New關(guān)鍵字分配內存用對象加鎖的方式來(lái)支持多線(xiàn)程都具有接口(interface)的概念內部類(lèi)繼承類(lèi)的時(shí)候不會(huì )以某種特定的訪(fǎng)問(wèn)權限來(lái)繼承;沒(méi)有全局函數或者常量,一切必須屬于類(lèi);數組或者字符串都自帶長(cháng)度計算和邊界檢查;只使用“.”操作符,沒(méi)有“->”和“::”;"null”、“boolean”和“bool”成為了關(guān)鍵字;任何變量均在使用前進(jìn)行初始化;  不能使用整數來(lái)返回到if條件語(yǔ)句中,必須使用布爾值;“Try”模塊后可以有“finally” ;
C#JAVA之比較(圖表說(shuō)明)
 

 

C#

JAVA

目標

提供易用、面向對象、跨平臺

提供易用、面向對象、跨平臺

GC

豐富的類(lèi)庫

中間語(yǔ)言

IL

JVM

自動(dòng)生成文檔

(/out生成XML文檔)

有(javadoc生成HTML文檔)

值類(lèi)型

都是對象派生的

基本類(lèi)型是專(zhuān)門(mén)的

跨平臺

公共語(yǔ)言運行時(shí)

虛擬機

操作符重載

結構類(lèi)型

委托和事件

內置的委托和事件

接口和內部類(lèi)定義

傳遞參數

值、引用傳遞

只能值傳遞

屬性

支持

不支持

枚舉

不安全模式

JNI可達到同樣效果

分度器

無(wú)

拋出異常

數組

規則、不規則均可

不規則

接口

支持

支持

Switch

可用表達式

只能整數

Foreach

只能用forwhile

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
自從互聯(lián)網(wǎng)出現以來(lái),Java就成了許多開(kāi)發(fā)者的首選.而許多C++開(kāi)發(fā)者在較短的時(shí)間內轉移到了Java開(kāi)發(fā)者的隊伍中來(lái). Java成功的開(kāi)發(fā)和實(shí)現了許多高質(zhì)量的多線(xiàn)程動(dòng)畫(huà), 游戲, 以及分布的應用程序. 更重要的是,Java 語(yǔ)言是完全平臺無(wú)關(guān)的. 

被稱(chēng)作Apllets(小應用程序)的Java程序在被下載到本地以前必須首先通過(guò)安全認證,這樣就避免了任何病毒鉆入用戶(hù)的計算機的企圖. 許多新的改進(jìn),諸如旋擺軟件包(swing package), Java2D API, 連網(wǎng)軟件包(java .net)在最初的Java開(kāi)發(fā)包發(fā)布以后被加進(jìn)了這種語(yǔ)言里. 從Sun公司發(fā)布Java以來(lái),它的許多競爭對手開(kāi)發(fā)了這種熱門(mén)語(yǔ)言的替代品,一些公司甚至在兩年以前就開(kāi)始了. 

現在一家無(wú)需更多介紹的公司--微軟已經(jīng)發(fā)布了一種新的叫做微軟.NET的技術(shù). .NET家族的一種主要的語(yǔ)言是C#或者說(shuō)C-sharp. 這種語(yǔ)言是從Java/C++繼承而來(lái)的. 從我的對C#的六個(gè)月的技術(shù)上的經(jīng)驗來(lái)說(shuō),我覺(jué)得C#或多或少與Java是相似的.但是C++的許多功能,比方說(shuō)操作符重載(它在Java中已經(jīng)被移去了)還存在于C#中. 

Java程序能夠在安裝了Java虛擬機或者JVM的任何平臺上運行.但是.NET程序的平臺要求安裝了通用語(yǔ)言運行庫或者稱(chēng)做CLR. 它是所有.NET語(yǔ)言運行所需的運行庫.所以一種.NET語(yǔ)言能夠調用另一種.NET語(yǔ)言寫(xiě)成的模塊和函數. 更進(jìn)一步的說(shuō),如果你學(xué)習了種像C#之類(lèi)的語(yǔ)言,那么你就很容易學(xué)習另一種.NET語(yǔ)言因為所有的.NET語(yǔ)言遵循微軟所謂的.NET Framework(架構). 這種架構包括了編寫(xiě)和安裝健壯的.NET應用程序所必需的類(lèi)庫.使用.NET你可以通過(guò)ASP.NET進(jìn)行服務(wù)器端的編程,這點(diǎn)非常像JAVA中的servlets. 

就象Java中的Applets, C#引入了WinForms 和WebForms的概念.使用WinForms你可以設計基于Windows的應用程序而使用WebForms你能夠開(kāi)發(fā)Web應用程序. 這點(diǎn)可以要么通過(guò)C#編程或者是使用Visual Studio.NET這樣的開(kāi)發(fā)環(huán)境工具來(lái)實(shí)現. 它包含了Visual C#,使用Visual C#你可以非常容易的編寫(xiě)C#應用程序. 

在我們使用Visual C++編程的時(shí)候,WinForms幾乎就是win32程序.用C++來(lái)開(kāi)發(fā)這些程序是可能的.但是VC++給我們提供向導來(lái)簡(jiǎn)化我們的開(kāi)發(fā)過(guò)程.現在Visual C#也在做同樣的工作.因此如果你已經(jīng)是一個(gè)VC++的程序員了,那么你最好試一試VC#. 
Java程序和C#程序的比較 

我們應該比較一下用Java寫(xiě)成的程序和C#的有什么不同. 我們將討論兩個(gè)程序間主要的不同點(diǎn). 

Hello Java 程序 

class Hello { // 類(lèi)聲明 
public static void main(String args[]) { // main 方法,入口點(diǎn) 
System.out.println("Hello Java"); // 向控制臺輸出Hello Java 
} 
} 

Hello C# 程序 

using System; // 調用System命名空間 
class Hello { // 類(lèi)聲明 
public static void Main () { // main 方法, 入口點(diǎn) 
console.writeLine("Hello C#"); // 向控制臺輸出 Hello C# 



在Java中, lang軟件包是自動(dòng)引入的.在簡(jiǎn)單的程序里沒(méi)有必要引入這個(gè)包.但是在C#中,我們不得不在所有的程序里調用System命名空間. 請記住控制臺是System命名空間下的一個(gè)類(lèi). 試著(zhù)運行一下上面的程序并查看它們的輸出結果. 


Main方法 
Java:你有可能編寫(xiě)一個(gè)沒(méi)有main方法的Java程序,只要這個(gè)類(lèi)是用來(lái)作為父類(lèi).但是只有類(lèi)中包含有正確的Main方法的時(shí)候程序才能運行. 

C#:沒(méi)有正確的Main方法就不可能編譯C#源程序.如果main方法缺失了,那么編譯器就會(huì )顯示一個(gè)錯誤消息:程序'filename.exe'沒(méi)有定義入口點(diǎn). 


繼承 
Java 和C#都不支持多重繼承而且都提供接口的概念作為多重繼承的替代品.但是C#在接口中包括了更高級的內容.請在本文末找出題為新增加的特點(diǎn)的內容. 


操作符和控制流語(yǔ)句 
Java中出現的所有諸如算術(shù),邏輯,自增和自減等操作符都可以在C#中找到. 而Java中的像if, else, if-else, for, do-while, while等控制流語(yǔ)句C#統統支持. 但是C# 增加了C++中流行的goto語(yǔ)句. 


異常處理 
在C#中你可以重用try, catch, finally, throws 語(yǔ)句處理運行時(shí)錯誤(通常也叫做異常).C# 中的異常處理過(guò)程除了一些小的不同以外幾乎與Java完全相同. C#中System.Exception命名空間是所有異常類(lèi)的基類(lèi). 

多線(xiàn)程 
C#中多線(xiàn)程的應用比起Java來(lái)要容易得多.我們可以使用Monitor 和 Mutex類(lèi)同步線(xiàn)程. 

新增特點(diǎn) 
索引,屬性和代理是C#中的新概念.索引幾乎與Java中的向量相同. 對其新特點(diǎn)的完全的討論已經(jīng)超出了我們的范圍.但是我將盡量在這個(gè)網(wǎng)站的其它地方解釋它們. C#引入了Java所沒(méi)有的操作符重載的概念.但是Java和C#都支持方法重載. 

讓我們回到對接口的討論,我們能夠驗證包括在接口中的方法是否是使用is 和 as 操作符實(shí)現的.當我們實(shí)現接口的時(shí)候能避免命名沖突.你甚至可以將兩個(gè)接口結合到一個(gè)中來(lái),并在類(lèi)中實(shí)現這個(gè)復合的接口,如下面的代碼所示: 
using System; 
public interface First { 
void A(); 
void B(); 
} 
public interface Second { 
void C(); 
} 
public interface Combined: First, Second { } 

class Combineimple: Combined { 
// 這里是程序代碼 
// main方法 
} } 

而且C#在顯示編譯錯誤的時(shí)候還顯示它們的錯誤代碼.你可以搜索與SDK有關(guān)的在線(xiàn)文檔尋找和這個(gè)錯誤代碼有關(guān)的內容并找出這個(gè)錯誤發(fā)生的原因的細節. 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java與C、C++的區別
c#
JAVA和C++區別
c++ 與C#比較
初試C#
Java編程入門(mén)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久