新聞中心
這篇文章主要介紹“C#和Java的對(duì)比”,在日常操作中,相信很多人在C#和Java的對(duì)比問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C#和Java的對(duì)比”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計(jì)專才。
C#和Java比較
C#和Java比較,號(hào)稱90%的相同加上10%的不同。因此當(dāng)時(shí)我學(xué)習(xí)C#,閱讀兩種代碼完全沒有什么阻礙。
對(duì)C#了解得深入以后,來發(fā)表下對(duì)這兩種語(yǔ)言各自特性的一些看法
比較起Java和C#大相徑庭的那10%,會(huì)發(fā)現(xiàn)C#五花八門的特性要多很多。比較知名的有:委托,屬性,真正的泛型,索引器,類初始化器,分部類,操作符重載,struct,unsafe代碼,IDisposable等,另外。net framework 3.5還加了一大串純粹由編譯器提供的特性。
委托,這個(gè)可以算是C#之于Java的***優(yōu)勢(shì)。雖然Java可以依靠接口,匿名內(nèi)部類這些特性實(shí)現(xiàn)委托一樣的功能,但卻要麻煩許多,如果涉及到N個(gè)委托實(shí)例相加的情況,那么一個(gè)C#里面簡(jiǎn)單的"+"號(hào),在Java里就只能用FilterChain,InterceptorStack這種概念了。
屬性,據(jù)說屬性信息是帶到運(yùn)行時(shí)的,后查看反射的確有PropertyInfo類,之前說它是編譯器語(yǔ)法糖是受了某篇分析IL代碼的文章誤導(dǎo),不過這個(gè)是不是語(yǔ)法糖都沒什么關(guān)系,它和Java普遍做法的get,set各有優(yōu)劣。屬性寫起來簡(jiǎn)捷,但卻比較難看出哪些屬性是只讀,哪些是只寫不讀。
真正的泛型,這個(gè)又是一大C#的優(yōu)勢(shì),同時(shí)偽泛型又是Java的一大敗筆。但是Java年代比較長(zhǎng),為兼容性考慮不得不使用假的泛型實(shí)現(xiàn)。如果泛型不是在jdk1.5時(shí)推出,而是在jdk1.4,和collection framework一起推出,我認(rèn)為它也會(huì)采用真正的泛型實(shí)現(xiàn)。
索引器,有了這個(gè)很多容器類都可以直接用[]取元素,感覺還不錯(cuò),比沒有好,編譯器的小把戲。
類初始化器,典型的懶漢特性。每次用頂多能省下一兩行代碼,又是編譯器的小把戲。
分部類(partial class),純粹為了vs.net的那一大堆圖形化設(shè)計(jì)器老和人的代碼沖突而搞出來得玩意,又是編譯器的小把戲。
操作符重載,屬于用到得不多,要用時(shí)卻顯得特別有用的東西,很奇怪Java為什么不提供這個(gè)功能。
struct,在堆棧上的東西,釋放內(nèi)存那是超級(jí)的快,只不過需要用到這個(gè)的場(chǎng)合,大概都在使用C++編程。
unsafe代碼,純粹增加語(yǔ)言復(fù)雜性的東西。就好像一個(gè)人搬家,看這個(gè)不舍得扔,那個(gè)也不舍得扔,搞到***把瓶瓶罐罐都搬走了。
IDisposable,實(shí)現(xiàn)這個(gè)接口,配合using塊,非常的強(qiáng)大,終于可以像C++那樣掌握對(duì)象的銷毀了。
接著說說Java比C#多的特性:
匿名內(nèi)部類:真是極端方便的一個(gè)東西,還和Java的好多設(shè)計(jì)模式有關(guān)系,不過C#把Java匿名內(nèi)部類的寫法拿去用作類初始化器了,糟蹋了……
動(dòng)態(tài)代理: Java里面要實(shí)現(xiàn)AOP,易如反掌;C#要實(shí)現(xiàn)AOP,難如登天,不得不借助Assamble命名空間下的那些動(dòng)態(tài)IL生成工具。這就是動(dòng)態(tài)代理的作用。
希望有一天C#可以擁有匿名內(nèi)部類和動(dòng)態(tài)代理,變得更完善。也希望Java也可以有委托等。
到此,關(guān)于“C#和Java的對(duì)比”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
本文標(biāo)題:C#和Java的對(duì)比
當(dāng)前鏈接:http://fisionsoft.com.cn/article/iggdde.html