Java和C#都是編程的語言,它們是兩個不同方向的兩種語言
相同點:
他們都是面向物件的語言,也就是說,它們都能實作面向物件的思想(封裝,繼承,多型)
區別:
1.c#中的命名空間是namespace類似于Java中的package(包),在Java中匯入包用import而c#中用using,
2.c#和Java都是從main函式入口的,但是c#中的main函式的首字母必須大寫,它有四種寫法如下:
static void Main(string args[]){}
static int Main(string args[]){}
static void Main(){}
static void Main(){}
而Java中只有一種形式:static void main(String [] args){}
3.資料型別:Java跟c#基本都差不多,但是Java的String型別的首字母必須大寫,而c#中可以小寫也可以大寫,還有布爾型,Java中是boolean,c#中是bool,
4.變數的命名:Java中可以用$符號,而c#中不可以使用,
5.注釋:Java比c#少一種"///"的檔案注釋,
6.輸出:c#有三種方式輸出:Cosole.WriteLine(); Cosole.WriteLine(要輸出的值); Cosole.WriteLine("格式字串",變數串列); 前兩種的用法與Java中的ystem.out.println()方法的用法相同,第三種方式是根據占位符輸出的,比Java更方便了,
7.控制流陳述句:c#跟Java類似,還有c#中的switch如果case后面有內容必須要有break;Java可以沒有break;
8.陣列:兩種語言的宣告都是用new關鍵字的,都可以在創建陣列的同時初始化如:int a[]={1,2,3,5,5};但是c#比Java多兩種初始化如:int a[]=new int[3]{1,2,3}; int a[]=new int[]{1,2,3};
9.方法中傳遞的引數:兩種語言都使用值傳遞與參考傳遞,
C#的參考傳遞的關鍵字是ref與out,ref側重于修改,out側重于輸出,而Java中都以傳值方式;
10.訪問修飾符:C#中的訪問修飾符與Java中的基本對應,但多出了一個internal,簡而言之,C#有5種型別的可訪問性,如下所示:
public:成員可以從任何代碼訪問, protected:成員只能從派生類訪問,
internal:成員只能從同一程式集的內部訪問,
protected:成員只能從同一程式集內的派生類訪問,
private:成員只能在當前類的內部訪問,
11.由于C#中不存在final關鍵詞,如果想要某個類不再被派生,你可以使用sealed關鍵詞密封,
12.集合:兩種語言都有集合ArrayList,還有通過鍵訪問值的Java中是HashMap而c#中是HashTable,c#比Java多泛型集合List<T>與Dictionary<K,V>更容易了,無需拆箱裝箱了,更安全了,
13.繼承:Java中用關鍵字extends,c#只用":"就行了.呼叫父類的構造方法Java用super關鍵字,而c#用base關鍵字,
14.多型:抽象類和抽象方法兩種語言都用abstract關鍵字,Java中另外一個類如果繼承了它,實作直接重寫此方法就可以了;而c#必須加上關鍵字override實作,C#還比Java多一種虛方法來實作多型,
15.介面:都用關鍵字interface定義,Java實作用關鍵字implements;c#用":"實作,在C#中,介面內的所有方法默認都是公用方法,在Java中,方法宣告可以帶有public修飾符(即使這并非必要),但在C#中,顯式為介面的方法指定public修飾符是非法的,
16.C#中的is運算子與Java中的instanceof運算子一樣,兩者都可以用來測驗某個物件的實體是否屬于特定的型別,在Java中沒有與C#中的as運算子等價的運算子,as運算子與is運算子非常相似,但它更富有"進取心":如果型別正確的話,as運算子會嘗試把被測驗的物件參考轉換成目標型別;否則,它把變數參考設定成null,
17.結構(Struct)與類很相似,而結構是一種值型別,它存盤在堆疊中或者是嵌入式的,結構可以實作介面,可以象類一樣擁有成員,但結構不支持繼承,
18.c#保留了指標,Unsafe,(C#使用指標不安全,最后這條有待考證)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/20473.html
標籤:C#
上一篇:C#入門教程(一)
