真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#開發(fā)者怎么過渡到JAVA開發(fā)者

這篇文章將為大家詳細(xì)講解有關(guān)C#開發(fā)者怎么過渡到JAVA開發(fā)者,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元呼蘭做網(wǎng)站,已為上家服務(wù),為呼蘭各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108

1.IDE

VS是宇宙***IDE,這個是無可爭辯的,Eclipse雖然有些弱,但也做得不錯了.

相比VS動輒8,9個G的身材,Eclipse則小很多,我用的是J2EE版本的Eclipse,解壓后300M+,免安裝.

當(dāng)然,VS龐大,但是對于提高開發(fā)效率,則有則無可比擬的優(yōu)勢.

for(int i=0;i<5;i++){              }

這樣的代碼,我在Eclipse里面是一個字符一個字符輸入的,VS的話,打完 for 之后,兩下Tab就可以了。

當(dāng)然在代碼重構(gòu)這里,Eclipse則可用的操作比原生的VS多很多。(VS2015的話,重構(gòu)也很牛逼,ReSharp附體的感覺)

IDE的話,還是一分大小一分功能,對于腦子比手快的同學(xué)來說,Eclipse是一種折磨。如果有Java的高手,請教一下如何加快速度。

另外一點,Eclipse的默認(rèn)字體,對中文不友好,VS則好很多。

2.泛型

泛型則是Java的一個槽點。擦除法害死人。

下面的技術(shù)問題,如果有覺得錯誤的地方,請一定指出。

C# 的泛型,根據(jù)不同的類型參數(shù),產(chǎn)生不同的新的匿名類,Java則只是編譯階段,假裝有泛型的概念。

ArrayList c = new  ArrayList();     c.remove(1);     c.remove((Object)1);

現(xiàn)在集中吐槽一下上面這段代碼。

一個列表的話,刪除元素,C#會有一個 Remove 和 一個RemoveAt,前者表示要刪除指定的元素,后者表示刪除指定下標(biāo)的元素。

然后,如果你在代碼里面寫 c.remove(1); Java的動作是刪除下標(biāo)為1的元素。。

這里主要的問題是,當(dāng)初Java在設(shè)計的時候,沒有考慮到通過下標(biāo)刪除或者直接刪除兩種需求,所以沒有將RemoveAt和Remove區(qū)別起來.

當(dāng)然,這樣就造成了Remove(Integer)的時候,會出現(xiàn)歧異,為了消除歧義,又需要將Integer或者其他泛型類型強(qiáng)制轉(zhuǎn)為Object.

在C#里面,由于具有RemoveAt方法,完整的泛型支持,所以Remove方法后面直接跟上要Remove的東西即可,這里是需要注意的一個點.

3 基本類型

int a = 1;             Int32 b = 2;

int 和 Int32,在C#里面是同一個類型(當(dāng)然都是值類型,保存在棧上面的)

C# Via CLR里面也說過這件事情,int 是Int32的別名.(如果這個想法有錯誤,希望大家指出)

List t = new List();             List m = new List();

所以在C#里面這樣寫是可以的.

在Java里面,int 和 Integer 可是涇渭分明:

int 表示基礎(chǔ)類型,Integer表示類,在泛型的時候,只能用Integer.

這里的區(qū)別我不是很清楚,int 好像就是一個簡單的存放數(shù)字的東西,也沒有什么方法可以使用.

ArrayList c = new  ArrayList();

所以,Java里面,類型參數(shù)T 看上去也沒有C#靈活。

4.Java沒有Struct概念

本質(zhì)上說Class和Struct在業(yè)務(wù)上差不多。只是 Class在堆上,Struct在棧上,一個是引用傳遞,一個是值傳遞。

一般來說,一個 輕的結(jié)構(gòu),貧血模型,我喜歡用Struct,一個 重的結(jié)構(gòu),充血模型,我喜歡用Class。

Java,很抱歉,沒有Struct,解決方案是Class,或者是內(nèi)部Class。。

為什么Struct不能在Java里面實現(xiàn),是設(shè)計使然,還是技術(shù)問題,我不知道。

5.Java的枚舉

這里倒不是吐槽Java枚舉功能上的問題,而是,Enum這個玩藝,還要依賴于JDK版本的。

JDK1.5以上才行,如果你的工程JDK版本過低,Enum都不支持。

C#里面的Enum應(yīng)該是全Framework支持的,(現(xiàn)在都找不到NET2.0以前的Framework了,無法驗證1.0,1.1,記憶中是支持的。)

為什么說到這個問題呢,有一次帶學(xué)生做實驗,Eclipse里面新建了一個工程,也沒有選擇JDK版本,使用了默認(rèn)的低版本的JDK,然后,呵呵,

Enum這么簡單的東西,都編譯不過。學(xué)藝不精阿。。。

Enum的值,本質(zhì)是一個數(shù)字,Enum則是一個結(jié)構(gòu),Java的Enum是什么呢?

 6.字符串

String A = "Hello";             String B = "Hello";             System.Console.WriteLine(A == B);             System.Console.ReadLine();

C#里面是True。Java里面也是True。

(Java里面A和B的地址指向同樣的地方?C#字符串駐留了。)

String a = new string('a', 10);             String b = new string('a', 10);             Console.WriteLine(a == b);             Console.ReadLine();

這個在C#里面也是True,比較地址,由于NET的神秘的字符串駐留機(jī)制,其實兩個String指向同樣的地方。

String A = new String("Hello"); String B = new String("Hello"); Boolean C = (A==B);

這里是False,Java真正的比較了兩個地址,兩個地址是不同的。如果真的要比較,請用諸如 Boolean C = (A.equals(B)); 這樣的方法。

關(guān)于“C#開發(fā)者怎么過渡到JAVA開發(fā)者”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


文章題目:C#開發(fā)者怎么過渡到JAVA開發(fā)者
文章出自:http://weahome.cn/article/gihosh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部