c#和java的區(qū)別是什么
c#和java的區(qū)別是什么
Java語言是開放式的世界語言,基本源代碼都公開,而C# 作為Microsoft的一門主打語言也不甘示弱。一個開源,一個收費,它們兩者基本上都對C、C++ 深澀的語法和語義進行了改進??墒撬麄冎g的區(qū)別卻有很大不同。下面是學習啦小編為大家準備的c#和java的區(qū)別是什么,希望大家喜歡!
c#和java的區(qū)別一:屬性
對于那些經常使用快速開發(fā)工具,如Delphi或者Visual Basic的開發(fā)人員來說,屬性是一個非常熟悉的概念。
一般來說,通過getXXX可以讀取屬性的值,而通過setXXX可以設置屬性的值。
c#中比較常見的屬性操作語句: foo.size++; label.font.bold=true;
很明顯,上述的屬性設置方式較JAVA來說更為簡潔,可主讀性也更強。這充分體現(xiàn)了C#簡單的特點。
JAVA對于屬性的定義:public int getSize(){ return size; } public void setSize(int value){ size=value; }
c#對于屬性的定義進行了簡化:public int Size{ get{ return size; } set{size=value; }}
c#和java的區(qū)別二:index
C#提供index來給對象加上索引的功能,從而用與處理數(shù)組類似的方式來處理對象,JAVA語言則不支持index
c#和java的區(qū)別三:delegate
可以認為是一種類型安全、面向對象的函數(shù)指針。
C#使有delegate可以通過一個名字訪問不同的函數(shù),它實現(xiàn)和JAVA中的interface類似的功能,但是它比interface更為好用。
c#和java的區(qū)別四:event
C#提供對event的直接支持,它通過delegate和event關鍵字實現(xiàn)對事件的處理。event關鍵字隱藏所有delegate方法,運算符“+=”和“-+”允許程序員自由加入或者刪除時間處理程序。
c#和java的區(qū)別五:enum
枚舉用于指定一系列的對象。
C#通過如下語句來定義和使用枚舉:
定義:public enum Direction{North,East,West,South};
JAVA不直接支持枚舉,如果要實現(xiàn)和C#相類似的功能,必須先定義一個類
c#和java的區(qū)別六:foreach語句
C#提供了標準的for循環(huán),同時還提供了foreach語句(從VB中引入)來循環(huán)處理集合中的元素。
C#遍歷集合中的所有元素:foreach(object o in collection){…}
c#和java的區(qū)別七:統(tǒng)一數(shù)據(jù)類型
大多數(shù)的高級程序設計語言都有基本數(shù)據(jù)類型,如整型、浮點類型等。同時,為了更好地滿足實際的需要,對不同的數(shù)據(jù)類型有不同的處理方式,顯然,如果能夠對簡單數(shù)據(jù)類型的處理和對復雜數(shù)據(jù)類型的處理結合在一起,并用一致的方式加以處理的話,無疑會大大提升應用程序設計的效率,增強程序設計的靈活性。 JAVA語言在處理基本數(shù)據(jù)類型的時候也采取分別處理的策略,但是在基本數(shù)據(jù)類型的基礎上提供了一系列封裝這些基本數(shù)據(jù)類型的類,例如:整型(int)被類Integer所封裝,雙精度浮點(double)被類Double封裝。
C#提供了一種和JAVA不同的方式來實現(xiàn)數(shù)據(jù)類型的統(tǒng)一。事實上,在c#中,即使是int這樣的簡單數(shù)據(jù)類型在C#內部也是通過一個結構體Int32來實現(xiàn)的,在C#中,可以這樣認為,int只是結構體Int32的一個別名。由于C#中的結構體也繼承自類Object,這樣,Object類中定義的方法,各個結構體也擁有。
c#和java的區(qū)別八:操作符重載
通過操作符重載可以用一種比較自然的方式來操縱各種數(shù)據(jù)類型,從而大大提升程序的可讀性和靈活性。C#中的“==”操作符在Object類中進行了定義,在Object中定義的==操作符通過比較兩個值的引用來獲得最后的結果。如果使有和集合相關的類,則必須在這樣的類中實現(xiàn)ICompar接口,這個接口中定義了一個方法CompareTo,該方法返回兩個對象的比較結果,在此基礎上,可以進一步定義各個實現(xiàn)比較的操作符,如“>”、“<”、“>=”、“<=”等。事實上,數(shù)字類型(int、long等)可以直接使用這些比較操作符,它們的內部都實現(xiàn)了ICompare接口。
c#和java的區(qū)別九:多態(tài)性
虛似方法提供了多態(tài)性的技持。多態(tài)意味著派生類可以定義一個和基類中同名的方法。盡管JAVA和C#都支持多態(tài)性,但是它們的具體實現(xiàn)方式還是有一定的差別。
在JAVA語言中,默認情況下,基類的對象可以直接調用派生類中的虛似方法,在C#語言中,基類要調用派生類中的虛似方法必須通過virtual關鍵字來實現(xiàn)。同時,在C#語言中,一個方法要重載基類中的同名方法,還必須通過關鍵字override來實現(xiàn)。
以上只是簡單地比較了C#和JAVA之間的異同,事實上,這二者之間的比較遠不止上面所介紹的內容,要學好這兩種語言,需要經過大量的實踐工作,在實踐中區(qū)分開兩種語言的共同點和不同點。