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