1. 程式人生 > >C#與Java的比較

C#與Java的比較

C#中有無符號數,Java沒有。

C#中有值型別,且可自己定義值型別的結構體(struct)。
Java中的基本型別(或叫基元型別)即為值型別,但Java沒有結構體,所以不能自定義值型別。
C#中的值型別(包括所有基本型別)間接繼承自Object,有自己的方法可以呼叫;Java中的值型別(即基本型別)不繼承自Object,只是簡單的資料,沒有方法可以呼叫。

C#中int等同於System.Int32,是值型別;bool等同於System.Boolean;等。
Java中int是基本型別,是值型別,而Integer是引用型別,Integer是int的包裝器,int自身沒有方法,Integer有一些方法;int與Integer之間可隱式轉換(導致裝箱和拆箱),但當Integer值為null的時候會在執行時丟擲異常。boolean等類似。

Java中的int與Integer的對應在C#中類似int和Nullable<int>的對應,它們的後者都是前者的包裝,且後者可以等於null。但Nullable<int>實際上仍然是值型別的(所以仍然很輕量級),所以從記憶體上講C#中int和Object的對應更接近Java的對應一些。C#中Nullable<int>到int的轉換必須顯式進行,因為Nullable<int>中的值為null時會引發執行時異常。
其他基本型別與之類似。