Java, C#, Swift文法對比速查表

來源:互聯網
上載者:User

標籤:

原文:Java, C#, Swift文法對比速查表

  Java 8 C# 6 Swift
變數 類型 變數名; 類型 變數名; var 變數名 : 類型;
變數(類型推斷) N/A var 變數名=初值; var 變數名=初值;
常量 final 類型 常量名=初值; readonly 類型 常量名=初值; let 常量名 : 類型=初值;
基本類型

int short long byte
double float
boolean
char

int short long byte
double float
bool
char

Int32 Int16 Int64 Int8
Double Float
Bool
Character

字串 String 變數名=""; string 變數名=""; let 變數名 : String="";
字串嵌入值 N/A "\{運算式}" "\(運算式)"
可變字串 StringBuilder StringBuilder var 變數名 : String;
定常數組 類型[] 變數名={元素1,元素2}; 類型[] 變數名={元素1,元素2}; let 變數名 : 類型名[] = [元素1, 元素2];
變長數組(列表) ArrayList<類型> List<類型> var 變數名=類型名[]();
追加元素 add Add append
遍曆 for (類型 變數 : 集合) foreach (類型 變數 in 集合) for (變數 in 集合)
字典 TreeMap<鍵類型, 實值型別> Dictionary<鍵類型, 實值型別> Dictionary<鍵類型, 實值型別>
字典初始化

TreeMap<鍵類型, 實值型別> 變數名 = new TreeMap<鍵類型, 實值型別>() {
    {
        put(鍵1, 值1); 
        put(鍵2, 值2); 
    }
};

var 變數名= new Dictionary<鍵類型, 實值型別>()
{
    [鍵1] = 值1,
    [鍵2] = 值2,
};

var 變數名 : Dictionary<鍵類型, 實值型別>= [
    鍵1 : 值1,
    鍵2 : 值2
];

字典下標 N/A(使用get方法) 變數名[鍵] 變數名[鍵]
定義函數(方法) 傳回型別 方法名(參數類型1 形參1, 參數類型2 形參2){} 傳回型別 方法名(參數類型1 形參1, 參數類型2 形參2=預設值){} func 函數名(形參1 : 參數類型1, 外參名 形參2 : 參數類型2=預設值) -> 傳回型別{}
調用函數(方法) 方法名(實參1, 實參2); 方法名(實參1, 實參2); 函數名(實參1, 外參名 : 實參2);
可變參數 傳回型別 方法名(參數類型… 形參){} 傳回型別 方法名(params 參數類型[] 形參){} func 函數名(形參 : 參數類型...) -> 傳回型別{}
傳出參數 N/A,包在對象裡面

傳回型別 方法名(ref 參數類型 形參){}
傳回型別 方法名(out 參數類型 形參){}

func 函數名(inout 形參 : 參數類型) -> 傳回型別{}
調用傳出參數 N/A 實參 &實參
函數類型 N/A,用單方法介面替代 Action和Func系列泛型類 (參數類型1, 參數類型2) –> 傳回型別
閉包

(參數類型 形參) -> 運算式


() –> {
   多行語句
}

(參數類型 形參) => 運算式


() =>
{
   多行語句
}

{ (形參: 參數類型) –> 傳回型別 in 運算式}


{ () –>() in 
   多行語句
}

枚舉

enum 類型名 {
   枚舉值1(值1), 枚舉值2(值2), 枚舉值3(值3);
}

enum 類型名
{
   枚舉值1=值1,
   枚舉值2=值2,
   枚舉值3=值3
}

enum 類型名 {
   case 枚舉值1=值1, 枚舉值2=值2, 枚舉值3=值3
}

結構(實值型別) N/A struct 結構名 { 成員 } struct 結構名 { 成員 }
類(參考型別) class 類名 { 成員 } class 類名 { 成員 } class 類名 { 成員 }
建立對象執行個體 new 類名(實參1, 實參2) new 類或結構名(實參1, 實參2) 類或結構名(外參名1 : 實參1, 外參名2 : 實參2)
靜態成員 static static 結構和枚舉static,類和介面class
存取層級

public,公有
protected,保護(包內和子類可訪問)
無修飾符,預設(包內可訪問)
private,私人

public,公有
protected,保護(子類可訪問)
internal,內部(程式集內可訪問)
protected internal,內部保護(程式集內的子類可訪問)
private,私人

public,公有
internal,內部(模組內可訪問)
private,私人

儲存屬性 N/A,get set首碼方法命名規範 類型 屬性名稱 { get; set; }=初始值; var 屬性名稱 : 類型=初始值;
計算屬性 N/A,get set首碼方法命名規範

類型 屬性名稱
{
   get
   {
   }
   set
   { //形參為value
   }
}

var 屬性名稱 : 類型 {
   get {
   }
   set(形參) { //如不寫形參名,預設為newValue
   }
}

索引器(下標) N/A

傳回型別 this[參數類型 形參]

{
   get
   {
   }
   set
   { //形參為value
   }
}

subscript(形參 : 參數類型) –> 傳回型別 {
 get {
}
 set { //形參為newValue
}
}

構造器 類名(參數類型 形參){} 類名(參數類型 形參){} init(形參 : 參數類型){}
自身執行個體 this this self
調用其它構造器

類名() {
 this(實參);
}

類名() : this(實參)
{
}

init() {
 self.init(外參名 : 實參);
}

繼承 class 衍生類別 extends 基類 { 成員 } class 衍生類別 : 基類 { 成員 } class 衍生類別 : 基類 { 成員 }
調用基類構造器

衍生類別名(參數類型 參數) {
 super(參數);
}

衍生類別名(參數類型 參數) : base(參數)
{
}

init(參數 : 參數類型) {
 super.init(外參名 : 參數);
}

虛函數 預設都可覆蓋,不可覆蓋標final 標virtual可覆蓋 預設都可覆蓋, 不可覆蓋標@final
密封類 final sealed @final
覆蓋(override) 不加修飾,可加@Override override override
調用基類方法 super.方法(); base.方法(); super.方法();
類型檢查 基類執行個體 instanceof 衍生類別型 基類執行個體 is 衍生類別型 基類執行個體 is 衍生類別型
向下轉型

(衍生類別型)基類執行個體

(衍生類別型)基類執行個體
基類執行個體 as 衍生類別型

基類執行個體 as 衍生類別型
基類執行個體 as? 衍生類別型

介面 interface interface protocol
實現介面 class 類 implement 介面 { 成員 } class 類 : 介面 { 成員 } class 類 : 介面 { 成員 }
抽象類別 abstract abstract N/A
擴充 介面的預設方法 擴充方法 extension
命名空間 package namespace 按module

Java, C#, Swift文法對比速查表

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.