亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

華山論劍:C#對Java

2019-11-18 13:17:00
字體:
來源:轉載
供稿:網友

  一、C#、C++和java
  C#的語言規范由Microsoft的Anders Hejlsberg與Scott Wiltamuth編寫。在當前Microsoft天花亂墜的宣傳中,對C#和C++、Java作一番比較總是很有趣的??紤]到當前IT媒體的輿論傾向,假如你早就知道C#更接近Java而不是C++,事情也不值得大驚小怪。對于剛剛加入這場討論的讀者,下面的表1讓你自己作出判定。顯然,結論應該是:Java和C#雖然不是孿生子,但C#最主要的特色卻更接近Java而不是C++。
  
 華山論劍:C#對Java(圖一)


  了解表1總結的重要語言功能之后,請繼續往下閱讀,了解C#和Java的一些重要區別。
  
  二、語言規范的比較
  2.1、簡單數據類型
  
  簡單數據類型(PRimitive)在C#中稱為值類型,C#預定義的簡單數據類型比Java多。例如,C#有unit,即無符號整數。表2列出了所有C#的預定義數據類型:
  
華山論劍:C#對Java(圖二)

  2.2、常量
  
  忘掉Java中的static final修飾符。在C#中,常量可以用const要害詞聲明。
  
   public const int x = 55;
  
  此外,C#的設計者還增加了readonly要害詞。假如編譯器編譯時未能確定常量值,你可以使用readonly要害詞。readonly域只能通過初始化器或類的構造函數設置。
  
  2.3、公用類的入口點
  
  在Java中,公用類的入口點是一個名為main的公用靜態方法。main方法的參數是String對象數組,它沒有返回值。在C#中,main方法變成了公用靜態方法Main(大寫的M),Main方法的參數也是一個String對象數組,而且也沒有返回值,如下面的原型聲明所示:
  
   public static void Main(String[] args)
  
  但是,C#的Main方法不局限于此。假如不向Main方法傳遞任何參數,你可以使用上述Main方法的一個重載版本,即不帶參數列表的版本。也就是說,下面的Main方法也是一個合法的入口點:
  
   public static void Main()
  
  另外,假如你認為有必要的話,Main方法還可以返回一個int。例如,下面代碼中的Main方法返回1:
  
   using System;
  
  public class Hello {
  
  public static int Main() {
  
  Console.WriteLine("Done");
  
  return 1;
  
  }
  
  }
  
  與此相對,在Java中重載main方法是不合法的。
  
  2.4、switch語句
  
  在Java中,switch語句只能處理整數。但C#中的switch語句不同,它還能夠處理字符變量。請考慮下面用switch語句處理字符串變量的C#代碼:
  
   using System;
  
  public class Hello {
  
  public static void Main(String[] args) {
  
  switch (args[0]) {
  
  case "老板":
  
  Console.WriteLine("早上好!我們隨時預備為您效勞!");
  
  break;
  
  case "雇員":
  
  Console.WriteLine("早上好!你可以開始工作了!");
  
  break;
  
  default:
  
  Console.WriteLine("早上好!祝你好運!");
  
  break;
  
  }
  
  }
  
  }
  
  與Java中的switch不同,C#的switch語句要求每一個case塊或者在塊的末尾提供一個break語句,或者用goto轉到switch內的其他case標簽。
  
  2.5、foreach語句
  
  foreach語句枚舉集合中的各個元素,為集合中的每一個元素執行一次代碼塊。請參見下面的例子。
  
   using System;
  
  public class Hello {
  
  public static void Main(String[] args) {
  
  foreach (String arg in args)
  
  Console.WriteLine(arg);
  
  }
  
  }
  
  假如在運行這個執行文件的時候指定了參數,比如“Hello Peter Kevin Richard”,則程序的輸出將是下面幾行文字:
  
   Peter
  
  Kevin
  
  Richard
  
  2.6、C#沒有>>>移位操作符
  
  C#支持uint和ulong之類的無符號變量類型。因此,在C#中,右移操作符(即“>>”)對于無符號變量類型和帶符號變量類型(比如int和long)的處理方式不同。右移uint和ulong丟棄低位并把空出的高位設置為零;但對于int和long類型的變量,“>>”操作符丟棄低位,同時,只有當變量值是正數時,“>>”才把空出的高位設置成零;假如“>>”操作的是一個負數,空出的高位被設置成為1。
  
  Java中不存在無符號的變量類型。因此,我們用“>>>”操作符在右移時引入負號位;否則,使用“>>”操作符。
  
  2.7、goto要害詞
  
  Java不用goto要害詞。在C#中,goto答應你轉到指定的標簽。不過,C#以非凡謹慎的態度對待goto,比如它不答應goto轉入到語句塊的內部。在Java中,你可以用帶標簽的語句加上break或continue取代C#中的goto。
  
  2.8、聲明數組
  
  在Java中,數組的聲明方法非常靈活,實際上有許多種聲明方法都屬于合法的方法。例如,下面的幾行代碼是等價的:
  
   int[] x = { 0, 1, 2, 3 };
  
  int x[] = { 0, 1, 2, 3 };
  
  但在C#中,只有第一行代碼合法,[]不能放到變量名字之后。
  
  2.9、包
  
  在C#中,包(Package)被稱為名稱空間。把名稱空間引入C#程序的要害詞是“using”。例如,“using System;”這個語句引入了System名稱空間。
  
  然而,與Java不同的是,C#答應為名稱空間或者名稱空間中的類指定別名:
  
   using TheConsole = System.Console;
  
  public class Hello {
  
  public static void Main() {
  
  TheConsole.WriteLine("使用別名");
  
  }
  
  }
  
  雖然從概念上看,Java的包類似于.NET的名稱空間。然而,兩者的實現方式不同。在Java中,包的名字同時也是實際存在的實體,它決定了放置.java文件的目錄結構。在C#中,物理的包和邏輯的名稱之間是完全分離的,也就是說,名稱空間的名字不會對物理的打包方式產生任何影響。在C#中,每一個源代碼文件可以從屬于多個名稱空間,而且它可以容納多個公共類。
  
  .NET中包的實體稱為程序集(Assembly)。每一個程序集包含一個manifest結構。manifest列舉程序集所包含的文件,控制哪些類型和資源被顯露到程序集之外,并把對這些類型和資源的引用映射到包含這些類型與資源的文件。程序集是自包含的,一個程序集可以放置到單一的文件之內,也可以分割成多個文件。.NET的這種封裝機制解決了DLL文件所面臨的問題,即臭名昭著的DLL Hell問題。
  
  2.10、默認包
  
  在Java中,java.lang包是默認的包,它無需顯式導入就已經自動包含。例如,要把一些文本輸出到控制臺,你可以使用下面的代碼:
  
   System.out.println("Hello world from Java");
  
  C#中不存在默認的包。假如要向控制臺輸出文本,你使用System名稱空間Console對象的WriteLine方法。但是,你必須顯式導入所有的類。代碼如下:
  
   using System;
  
  public class Hello {
  
  public static void Main() {
  
  Console.WriteLine("Hello world from C#");
  
  }
  
  }
  
  2.11、面向對象
  
  Java和C#都是完全面向對象的語言。在面向對象編程的三大原則方面,這兩種語言接近得不能再接近。
  
  繼續:這兩種語言都支持類的單一繼續,但類可以實現多個接口。所有類都從一個公共的基類繼續。
  
  封裝與可見性:無論是在Java還是C#中,你都可以決定類成員是否可見。除了C#的internal訪問修飾符之外,兩者的可見性機制非常相似。
  
  多態性:Java和C#都支持某些形式的多態性機制,且兩者實現方法非常類似。
  
  2.12、可訪問性
  
  類的每個成員都有特定類型的可訪問性。C#中的訪問修飾符與Java中的基本對應,但多出了一個internal。簡而言之,C#有5種類型的可訪問性,如下所示:
  
  public:成員可以從任何代碼訪問。
  
  protected:成員只能從派生類訪問。
  
  internal:成員只能從同一程序集的內部訪問。
  
  protected internal:成員只能從同一程序集內的派生類訪問。
  
  private:成員只能在當前類的內部訪問。
  
  2.13、派生類
  
  在Java中,我們用要害詞“extends”實現繼續。C#采用了C++的類派生語法。例如,下面的代碼顯示了如何派生父類Control從而創建出新類Button:
  public class Button: Control { . . }
  
  2.14、最終類
  
  由于C#中不存在final要害詞,假如想要某個類不再被派生,你可以使用sealed要害詞,如下例所示:
  
   sealed class FinalClass { . . }
  
  2.15、接口
  
  
  接口這個概念在C#和Java中非常相似。接口的要害詞是interface,一個接口可以擴展一個或者多個其他接口。按照慣例,接口的名字以大寫字母“I”開頭。下面的代碼是C#接口的一個例子,它與Java中的接口完全一樣:
  
   interface IShape { void Draw(); }
  
  擴展接口的語法與擴展類的語法一樣

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最新亚洲国产精品| 国产视频久久久久| 57pao精品| 欧美洲成人男女午夜视频| 亚洲国产美女精品久久久久∴| 91精品国产综合久久香蕉922| 97视频在线观看免费高清完整版在线观看| 欧美丝袜一区二区三区| 成人国内精品久久久久一区| 国产精品十八以下禁看| 国产精品私拍pans大尺度在线| 欧美极品美女电影一区| 久久亚洲电影天堂| 国产一区二区香蕉| 久久久人成影片一区二区三区| 人人爽久久涩噜噜噜网站| 日韩中文字幕免费| 国产精品欧美风情| 亚洲国产精品久久久久秋霞不卡| 欧美国产在线电影| 久久久女女女女999久久| 日韩精品视频免费在线观看| 欧美乱人伦中文字幕在线| 欧美影院在线播放| 国产精品日韩欧美| 久久久久成人精品| 日韩精品在线免费观看视频| 热99久久精品| 欧美激情欧美激情| 亚洲国产古装精品网站| 国语自产精品视频在线看| 亚洲欧洲高清在线| 久久综合国产精品台湾中文娱乐网| 欧美亚洲成人免费| 欧美成人午夜激情| 欧美裸体男粗大视频在线观看| 国产欧美一区二区三区四区| 欧美成人免费视频| 欧美成人第一页| 欧美电影在线观看网站| 国产精品久久久久久久久粉嫩av| 精品无人区太爽高潮在线播放| 国产拍精品一二三| 高清一区二区三区四区五区| 91av在线播放视频| 精品亚洲va在线va天堂资源站| 97在线看免费观看视频在线观看| www.xxxx精品| 国产精品久久久亚洲| 亚洲的天堂在线中文字幕| 国产脚交av在线一区二区| 日韩视频―中文字幕| 国产精品久久久久91| 在线成人中文字幕| 亚洲无线码在线一区观看| 热久久视久久精品18亚洲精品| 国产日韩欧美在线视频观看| 久久综合免费视频影院| 精品亚洲一区二区三区在线观看| 日韩精品免费看| 性欧美xxxx视频在线观看| 国产精品美女视频网站| 色与欲影视天天看综合网| 亚洲精品久久久久| 欧美激情2020午夜免费观看| 成人黄色片在线| 91av网站在线播放| 国产精品久久久久久久久久免费| 久久中文字幕在线| 国产日韩精品一区二区| 久久精视频免费在线久久完整在线看| 91在线观看免费观看| 欧美色视频日本高清在线观看| 18久久久久久| 欧美香蕉大胸在线视频观看| 国产一区二区在线播放| 欧美激情va永久在线播放| 欧美一级电影免费在线观看| 91成人免费观看网站| 国产日韩精品在线| 91视频国产精品| 久久全国免费视频| 日韩国产高清污视频在线观看| 精品亚洲国产视频| 国产欧亚日韩视频| 亚洲视频视频在线| 91产国在线观看动作片喷水| 亚洲国产欧美久久| 欧美精品手机在线| 欧美性xxxxx极品娇小| 午夜免费在线观看精品视频| 亚洲视频在线观看视频| 国产精品视频一区二区三区四| 国产亚洲美女精品久久久| 在线观看精品国产视频| 欧美亚洲成人免费| 都市激情亚洲色图| 国产午夜精品麻豆| 亚洲小视频在线| 亚洲国产成人久久综合| 久久久91精品国产| 久久深夜福利免费观看| 日韩久久免费视频| 欧美性猛交xxxx黑人猛交| 欧美激情久久久久久| 96精品久久久久中文字幕| 欧美精品videosex性欧美| 日韩精品免费电影| 91精品视频免费看| 国产男女猛烈无遮挡91| 这里只有精品在线播放| 九色精品美女在线| 亚洲午夜未满十八勿入免费观看全集| 97av在线视频免费播放| 国产经典一区二区| 欧美性猛交xxxx免费看| 日本精品免费一区二区三区| 国产男人精品视频| 日韩精品免费综合视频在线播放| 狠狠色狠狠色综合日日小说| 精品动漫一区二区| 亚洲国产中文字幕久久网| 中文字幕日韩在线观看| 日韩av在线网| 国产a∨精品一区二区三区不卡| 成人免费网站在线观看| 国产成人高清激情视频在线观看| 欧美极品少妇全裸体| 亚洲欧美日韩天堂一区二区| 国产精品自拍偷拍视频| 成人激情视频小说免费下载| 久久av红桃一区二区小说| 欧美中文在线字幕| 亚洲激情小视频| 亚洲精品自在久久| 欧美性色19p| 国产精品毛片a∨一区二区三区|国| 欧美乱妇高清无乱码| 久久99国产精品久久久久久久久| 日韩人体视频一二区| 欧洲成人免费视频| 亚洲精品久久久久久久久久久久久| 欧美日韩免费在线| 日韩午夜在线视频| 国产精品99蜜臀久久不卡二区| 日韩大陆毛片av| 日韩在线视频网| 久久99久久99精品中文字幕| 久久久久久久久久久国产| 97视频在线观看视频免费视频| 日韩激情av在线播放| 亚洲美女av黄| 日本在线观看天堂男亚洲| 欧美日韩国产一中文字不卡| 在线日韩欧美视频| 在线日韩欧美视频| 欧美精品videossex88| 精品国产91久久久| 色婷婷综合久久久久中文字幕1| 最新91在线视频| 欧美另类极品videosbestfree| 日韩精品免费综合视频在线播放| 日韩在线小视频| 久久精品电影一区二区|