日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
聊一下C#開發(fā)者如何過(guò)渡到JAVA開發(fā)者

由于工作需要,最近也開始倒騰Java了.NET的話,從2012年測(cè)試版開始玩的,那個(gè)時(shí)候VB6比較熟悉,還天真的以為VB.NET以后會(huì)很火,

事實(shí)證明,也只是一廂情愿,有C#了,要VB.NET干什么?既生瑜,何生亮...

一門語(yǔ)言玩得久,也不能說(shuō)對(duì)一門語(yǔ)言就精通了,裝配腦袋,趙姐夫才是大牛.我也只是一個(gè)愛(ài)好者罷了.

說(shuō)回正題,園子里面NET和JAVA好壞的帖子已經(jīng)無(wú)數(shù)了,這里只是想說(shuō)說(shuō)Csharper轉(zhuǎn)Javaer的一些感受,無(wú)意評(píng)價(jià)語(yǔ)言優(yōu)劣,我們沒(méi)有資格.

1.IDE

VS是宇宙***IDE,這個(gè)是無(wú)可爭(zhēng)辯的,Eclipse雖然有些弱,但也做得不錯(cuò)了.

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

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

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

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

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

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

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

2.泛型

泛型則是Java的一個(gè)槽點(diǎn)。擦除法害死人。

下面的技術(shù)問(wèn)題,如果有覺(jué)得錯(cuò)誤的地方,請(qǐng)一定指出。

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

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

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

一個(gè)列表的話,刪除元素,C#會(huì)有一個(gè) Remove 和 一個(gè)RemoveAt,前者表示要?jiǎng)h除指定的元素,后者表示刪除指定下標(biāo)的元素。

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

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

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

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

3 基本類型

            int a = 1;             Int32 b = 2;

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

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

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

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

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

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

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

    ArrayList c = new  ArrayList();

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

4.Java沒(méi)有Struct概念

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

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

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

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

5.Java的枚舉

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

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

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

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

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

Enum的值,本質(zhì)是一個(gè)數(shù)字,Enum則是一個(gè)結(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();

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

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

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

誰(shuí)來(lái)說(shuō)說(shuō)Java 的字符串機(jī)制。

7.市場(chǎng)和前途

做了很多人力資源的工作,感覺(jué)NET在國(guó)內(nèi)沒(méi)有Java火。

日本的話,NET有項(xiàng)目,但是大部分還是Java。

NET和Java的***高手人數(shù)差不多,但是中低水平的人,Java占據(jù)大部分,理由還是就業(yè)需要。

真正的高手,NET和Java使用起來(lái)都應(yīng)該很熟練的,算法業(yè)務(wù)才是重點(diǎn),語(yǔ)言只是工具。

千萬(wàn)別在回復(fù)里面討論語(yǔ)言的好壞,我們沒(méi)有資格。

歡迎指出技術(shù)上的問(wèn)題和硬傷,或者補(bǔ)充一些我沒(méi)有列舉的區(qū)別。


當(dāng)前標(biāo)題:聊一下C#開發(fā)者如何過(guò)渡到JAVA開發(fā)者
鏈接地址:http://www.dlmjj.cn/article/ccsoood.html