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