JAVA是一種可以跨平臺開發的語言,而C#目前只被Windows和Linux支持,Windows下的支持當然是由微軟自己開發的,而Linux下的支持則有MONO支持。實際上,MONO也是把C#應用轉化為JAVA應用而已,所以本質上,C#仍然只是被微軟自己的操作系統支持。應用平臺受到限制,是它最大的缺點。Java語言是一種完全的面向對象語言,雖然它的底層(運行時庫)是用C語言開發的,可是并不依賴于C。
因為Java的運行是在運行時庫的支持下進行的,所以運行效率比起可以更接近底層的C/C++來說效率會有所影響,不過Java的類庫采用很好的設計理念設計,非常好用,也非常實用,已經成為業界的一種標準開發語言。它的跨平臺的特性尤其讓很多開發者歡迎,你只需要開發一次就能在所有安裝了Java運行時庫的系統上運行。Java發展了十幾年了,可以應用領域非常之廣泛,Web開發有JSP,J2EE,桌面領域現在有JavaFX。Java既可以被編譯,也可以被解釋。通過編譯器,可以把Java程序翻譯成一種中間代碼 - 稱為字節碼 - 可以被Java解釋器,解釋的獨立于平臺的代碼。通過解釋器,每條Java字節指令被分析,然后在計算機上運行。只需編譯一次,程序運行時解釋執行。
通過上面的介紹,大家有一定的了解了,下面就具體的給大家分析一下:
1、關鍵字的不同a在Java中,如果導入其他包,應該使用import關鍵字,而在C#中,使用using關鍵字來引用其他的命名空間,但兩者的作用一樣。b:namespace(命名空間)是C#中組織代碼的方式,而package(包)是Java中用到的,它們的作用就是可以把緊密相關的一些代碼放在同一個命名空間中,大大提高管理和使用效率。c:在Java和C#中都是用class關鍵字表示類,而且編寫的任何代碼都應該包含在一個類里面。類要包含在一個命名空間或包中,但不同的是在Java中,要求類名必須與源文件的名字一樣,而C#不要求。
2、Main方法的不同C#中的Main()方法和Java中的main()方法作用都是一樣的,都是程序運行的第一步。但Java中main()方法首字母小寫且只有一種寫法,而C#中的Main()方法首字母必大寫且有四種寫法。分別是:Static void Main(string [] args){}static void Main(){}Static int Main(string [] args){}static int Main(){}3. 源文件方面。C#可以在一個.cs 文件中。出現多個name sapce(命名空間,有些類似于pacakage),并定義多個類。C#包含有預處理指令。
3、數據類型方面。a) C#定義了struct(結構),不能是抽象的,也不能被繼承,是值類型的。b) C#沒有基本類型的概念,全部是面向對象的類型,int是Int32的簡寫。c) 在Java中const是保留字,final與C#中的 const意思相同,C#中還有readonly允許運行時賦初值。d) 字符串比較,C#中可以用=比較值,與Java一樣用 StringBuffer來減少內存開銷。
4、運算符方面。C#增加了Checked和Unchecked以 繞過編譯錯誤。比如“把一個long付給int32 ,如果高32為零 則不會出錯,否則會有溢出錯誤,unchekced就是告訴編譯器不要去管溢出,盡你可能轉化”
5、分支語句方面。在Java中goto是保留字。C#中 switch中的case不會順序執行,末尾必須有break或者goto關鍵字。
6、訪問修飾符方面。在范圍放main,C#增加了internal和protected internal,前者表示只能從當前程序集內可見,即可以在編譯時可Assembly的DLL或EXE,類似于JAR;后者表示對當前程序集或者從此包 含類繼承的類可見。Sealed相當于Java中的final關鍵字。Java和C#都比較高級,可以看作高級語言的高級語言,優點是開發容易,但運行效率不如更為底層的C/C++。具體選擇使用的時候,可以根據實際的項目需要選擇。運行效率要求高的,底層控制要求高的用C/C++,否則可以選擇Java或C#;跨平臺的要求高的可以用Java。
7、輸入和輸出方法在Java中輸出方法為:System.out.println();和另一種System.out.println(要輸出的值);輸入方法為:創建Scanner對象,如Scanner sa = new Scanner();再用對象點方法。如 String name = sa.nextString();在C#中輸出方法為:Console.WriteLine();和Console.WriteLine(要輸出的值);及一種C#獨有的一種方法Console.WriteLine(“格式字符串”,變量列表);輸入方法為:string name = Console.ReadLine();另外值得一提的是,java主要是J2EE和手機方面的應用比較多,c#主要是用于.net網站或web系統開發,從這一點上看,java比.net的市場需求和就業待遇都要稍高一些。另外,java的學習難度比.net的學習難度大一點,至于哪個更有前途,我想這個可能部分伯仲吧。