java和c#都是面向對象編程高級語言,整體上來說,它們仍是很類似的,由於它們在發展過程當中都很大程序上學習了對方很多優秀的特性。因此,通常來講,從其中一門語言轉換到另一門語言應該都不會有很大問題。html
雖說這兩門語言很類似,但仍是有一些不一樣點,若是咱們可以掌握這些不一樣點,則能夠更加容易的實現兩門語言之間的切換,編寫出更加專業的代碼。java
以前寫過一篇文章(從Java轉向.NET/C#,Are You OK?),從highlevel層面對比了java和.net/c#兩個技術棧,經過這篇想必你們對.net/c#技術棧會有一個比較全面直觀的認識。接下來從編碼角度對這兩門語言進行一個對比,這些也應該是一個Java程序員轉爲c#程序員剛開始最須要適應和理解的點:程序員
1.c#裏面方法命名建議大寫打頭,follow pascal case;而java裏面方法名是小寫打頭,follow camel case。編程
2.c#裏面常量命名follow pascal case;而java裏面常量命名單詞全大寫,單詞之間用下劃線鏈接。c#
3.c#裏面左右大括號都獨立成一行;java裏面左大括號不獨立成一行。oracle
1.java裏面有pacakge的概念;c#裏面對應的是namespace。ide
2.java裏面引入某一個package下面的類,用import;c#裏面對應的是using。函數式編程
3.java裏面繼承父類和實現接口分別是extend和implement;c#裏面都用冒號(:)。函數
4.java裏面調用父類方法用super;c#裏面對應是base。學習
5.java裏面定義一個immutable類用final;c#裏面對應是sealed。
6.java裏面防止方法被重寫用final;c#裏面對應是sealed,在多重繼承複寫方法的場景可能會用到。
7.java裏面public或protected方法默認都是能夠被重寫;c#裏面默認都是不可被重寫,若是要可被重寫,須要加virtual標明。
8.java裏面子類複寫方法用@Override標註;c#裏面則是用override關鍵字。
9.java裏面定義常量用final static;c#裏面對應是const。更加準確的說,java裏面的final對應c#裏面的readonly,java裏面的final static對應c#裏面的const。
10.java裏面有checked exception和non-checked exception(RuntimeException)之分;c#裏面只有non-checked exception。
11.java裏面的annotation概念;c#裏面對應的是attribute。
12.java裏面可變參數是...;c#裏面對應是params。
13.java裏面一個java文件只能包含一個public class,而且文件名要和類名相同;c#則沒有這個限制,能夠包含多個public class。
14.c#裏面有property(屬性)概念;java裏面沒有,但可用getter/setter方法替代。
15.c#裏面有delegate(委託)概念;java裏面沒有。委託,表明一個方法的引用,是c#一開始就有的概念,和後來新增的lambda概念相似,都是對函數式編程(一個顯著特徵就是:函數能夠做爲參數傳遞)的支持。java是到了java 8才支持lambda,在以前若是有傳遞函數的場景,都是經過匿名類來實現。
16.c#裏面有extension method(擴展方法)概念;java裏面沒有。擴展方法,正如其名,能夠實現對標準方法的擴展。參考個人另一篇文章(從Java轉向.NET/C#,Are You OK?)。
17.c#裏面能夠直接用@打頭實現一個string的轉義。
18.c#裏面能夠用int?表示一個可爲null的int變量(here int is primitive type);java裏面只能用Integer。