萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> 整理的部分Java和C#不同點

整理的部分Java和C#不同點

   C#有統一的類型系統,所有的類型包括原始類型(int,bool,short,long等類型)都繼承於Object類。

  Java略不同,它的原始類型不是繼承於Object,每個原始類型都有對應的包裹類(繼承於Object),比如int的包裹類Integer

  C#有無符號整數,uint、ulong、ushort

  Java沒有

  C#沒有高精度的decimal。

  Java中有BigDecimal

  C#支持復數。Complex 結構

  Java中沒有

  C#中有值類型。通過使用strutct關鍵字,可以定義結構體,這種類型在傳遞的時候,是按值傳遞,而不是按引用傳遞。

  Java中只有原始類型。

  C#中有可空類型,Nullable。

  Java中只有包裹類。

  C#中允許有指針。

  Java中無指針。

  C#中,枚舉類型繼承於Enum類型,是值類型的一個派生物。

  Java中,枚舉類型是一個class,它的值類的一個實例。

  C#中有委托

  Java中沒有

  C#中有延遲綁定的類型,dynamic

  Java中沒有

  C#和Java中都有強引用和弱引用。

  但是Java中還有一種軟引用和虛引用Phantom reference。

  軟引用和弱引用類似,對象都是可達的,但仍然被GC回收。不同點在於,弱引用只要GC開始,就會被回收,而軟引用只用當JVM內存空間不足的時候才會被回收。

  虛引用的get方法永遠返回null,可以用虛引用來引用我們感興趣的對象,在GC回收的時候,會把該對象加到referenceQueue中。通過觀察referenceQueue,可以知道對象是否被回收了。(此時我們可以在gc回收之前做一些其他事情,比如記錄些日志什麼的)

  C#中支持二維矩形數組,單數組 int[,] a = new int[5, 2] {{0,0}, {1,2}, {2,4}, {3,6}, {4,8} };或者 int[,] a = { { 0, 0 }, { 1, 2 }, { 2, 4 }, { 3, 6 }, { 4, 8 } };

  Java中不支持,只支持數組的數組。

  C#中裝箱操作時候隱式的,拆箱操作時顯式的。

  Java中裝箱拆箱都是隱式的。

  C#中 成員變量修飾符 public, internal, protected, private, protected internal

  Java中 public, package, protected, private

  C#類中,繼承的方法,默認為new,必須顯示override才表示覆蓋。

  Java中默認表示覆蓋。

  C#中的內部類都是類級別的,可以隨時在外部實例化。

  Java中內部類必須是static的才是類級別的,才能在外部被實例化。

  C#支持分部類

  Java不支持

  C#中,枚舉類型不能實現接口。

  Java支持枚舉類型實現接口。

  C#支持運算符重載

  Java不支持。

  C#方法支持out,ref引用參數

  Java不支持。

  C#不支持常量參數

  Java支持,final。標記final的參數,在方法中不能被修改。

  public short getValue(final short index) {

  if (index < values.length) {

  index++; //出錯,index的值無法修改.

  return values[index];

  }

  else return -1;

  }

        :更多精彩教程請關注三聯網頁設計教程 欄目,

copyright © 萬盛學電腦網 all rights reserved