JAVA是一種可以跨平臺(tái)開發(fā)的語言,而C#目前只被Windows和Linux支持门躯,Windows下的支持當(dāng)然是由微軟自己開發(fā)的淆党,而Linux下的支持則有MONO支持。實(shí)際上,MONO也是把C#應(yīng)用轉(zhuǎn)化為JAVA應(yīng)用而已染乌,所以本質(zhì)上山孔,C#仍然只是被微軟自己的操作系統(tǒng)支持。應(yīng)用平臺(tái)受到限制荷憋,是它最大的缺點(diǎn)台颠。Java語言是一種完全的面向?qū)ο笳Z言,雖然它的底層(運(yùn)行時(shí)庫)是用C語言開發(fā)的勒庄,可是并不依賴于C串前。
因?yàn)镴ava的運(yùn)行是在運(yùn)行時(shí)庫的支持下進(jìn)行的,所以運(yùn)行效率比起可以更接近底層的C/C++來說效率會(huì)有所影響实蔽,不過Java的類庫采用很好的設(shè)計(jì)理念設(shè)計(jì)荡碾,非常好用,也非常實(shí)用局装,已經(jīng)成為業(yè)界的一種標(biāo)準(zhǔn)開發(fā)語言坛吁。它的跨平臺(tái)的特性尤其讓很多開發(fā)者歡迎,你只需要開發(fā)一次就能在所有安裝了Java運(yùn)行時(shí)庫的系統(tǒng)上運(yùn)行铐尚。Java發(fā)展了十幾年了拨脉,可以應(yīng)用領(lǐng)域非常之廣泛,Web開發(fā)有JSP宣增,J2EE玫膀,桌面領(lǐng)域現(xiàn)在有JavaFX。Java既可以被編譯爹脾,也可以被解釋帖旨。通過編譯器,可以把Java程序翻譯成一種中間代碼 - 稱為字節(jié)碼 - 可以被Java解釋器誉简,解釋的獨(dú)立于平臺(tái)的代碼碉就。通過解釋器,每條Java字節(jié)指令被分析闷串,然后在計(jì)算機(jī)上運(yùn)行。只需編譯一次筋量,程序運(yùn)行時(shí)解釋執(zhí)行烹吵。
通過上面的介紹,大家有一定的了解了桨武,下面就具體的給大家分析一下:
1肋拔、關(guān)鍵字的不同a在Java中,如果導(dǎo)入其他包呀酸,應(yīng)該使用import關(guān)鍵字凉蜂,而在C#中,使用using關(guān)鍵字來引用其他的命名空間,但兩者的作用一樣窿吩。b:namespace(命名空間)是C#中組織代碼的方式茎杂,而package(包)是Java中用到的,它們的作用就是可以把緊密相關(guān)的一些代碼放在同一個(gè)命名空間中纫雁,大大提高管理和使用效率煌往。c:在Java和C#中都是用class關(guān)鍵字表示類,而且編寫的任何代碼都應(yīng)該包含在一個(gè)類里面轧邪。類要包含在一個(gè)命名空間或包中刽脖,但不同的是在Java中,要求類名必須與源文件的名字一樣忌愚,而C#不要求曲管。
2、Main方法的不同C#中的Main()方法和Java中的main()方法作用都是一樣的硕糊,都是程序運(yùn)行的第一步翘地。但Java中main()方法首字母小寫且只有一種寫法,而C#中的Main()方法首字母必大寫且有四種寫法癌幕。分別是:Static void Main(string [] args){}static void Main(){}Static int Main(string [] args){}static int Main(){}3. 源文件方面衙耕。C#可以在一個(gè).cs 文件中。出現(xiàn)多個(gè)name sapce(命名空間勺远,有些類似于pacakage)橙喘,并定義多個(gè)類。C#包含有預(yù)處理指令胶逢。
3厅瞎、數(shù)據(jù)類型方面。a) C#定義了struct(結(jié)構(gòu))初坠,不能是抽象的和簸,也不能被繼承,是值類型的碟刺。b) C#沒有基本類型的概念锁保,全部是面向?qū)ο蟮念愋停琲nt是Int32的簡寫半沽。c) 在Java中const是保留字爽柒,final與C#中的 const意思相同,C#中還有readonly允許運(yùn)行時(shí)賦初值者填。d) 字符串比較浩村,C#中可以用=比較值,與Java一樣用 StringBuffer來減少內(nèi)存開銷占哟。
4心墅、運(yùn)算符方面酿矢。C#增加了Checked和Unchecked以 繞過編譯錯(cuò)誤啤握。比如“把一個(gè)long付給int32 膀曾,如果高32為零 則不會(huì)出錯(cuò),否則會(huì)有溢出錯(cuò)誤比吭,unchekced就是告訴編譯器不要去管溢出刺覆,盡你可能轉(zhuǎn)化”
5严肪、分支語句方面。在Java中g(shù)oto是保留字谦屑。C#中 switch中的case不會(huì)順序執(zhí)行驳糯,末尾必須有break或者goto關(guān)鍵字。
6氢橙、訪問修飾符方面酝枢。在范圍放main,C#增加了internal和protected internal悍手,前者表示只能從當(dāng)前程序集內(nèi)可見帘睦,即可以在編譯時(shí)可Assembly的DLL或EXE,類似于JAR;后者表示對(duì)當(dāng)前程序集或者從此包 含類繼承的類可見坦康。Sealed相當(dāng)于Java中的final關(guān)鍵字竣付。Java和C#都比較高級(jí),可以看作高級(jí)語言的高級(jí)語言滞欠,優(yōu)點(diǎn)是開發(fā)容易古胆,但運(yùn)行效率不如更為底層的C/C++。具體選擇使用的時(shí)候筛璧,可以根據(jù)實(shí)際的項(xiàng)目需要選擇逸绎。運(yùn)行效率要求高的,底層控制要求高的用C/C++夭谤,否則可以選擇Java或C#;跨平臺(tái)的要求高的可以用Java棺牧。
7、輸入和輸出方法在Java中輸出方法為:System.out.println();和另一種System.out.println(要輸出的值);輸入方法為:創(chuàng)建Scanner對(duì)象朗儒,如Scanner sa = new Scanner();再用對(duì)象點(diǎn)方法颊乘。如 String name = sa.nextString();在C#中輸出方法為:Console.WriteLine();和Console.WriteLine(要輸出的值);及一種C#獨(dú)有的一種方法Console.WriteLine(“格式字符串”,變量列表);輸入方法為:string name = Console.ReadLine();另外值得一提的是采蚀,java主要是J2EE和手機(jī)方面的應(yīng)用比較多疲牵,c#主要是用于.net網(wǎng)站或web系統(tǒng)開發(fā),從這一點(diǎn)上看榆鼠,java比.net的市場需求和就業(yè)待遇都要稍高一些。另外亥鸠,java的學(xué)習(xí)難度比.net的學(xué)習(xí)難度大一點(diǎn)妆够,至于哪個(gè)更有前途识啦,我想這個(gè)可能部分伯仲吧。