2013-12-13 41 views

回答

16

靜態類型

靜態類型是指類型是已知的,運行程序前檢查正確性。這通常由語言的編譯器完成。

public void foo() { 
    int x = 5; 
    boolean b = x; 
} 

動態類型

動態類型意味着,你的程序運行類型唯一已知的:例如,在運行程序之前以下Java方法會導致編譯錯誤,。例如,下面的Python(3,如果它的事項)腳本可以毫無問題地運行:

def erroneous(): 
    s = 'cat' - 1 

print('hi!') 

它確實會輸出hi!。但是,如果我們稱之爲erroneous

def erroneous(): 
    s = 'cat' - 1 

erroneous() 
print('hi!') 

一個TypeError將在運行時erroneous被稱爲提高

-1

靜態類型語言:

  • 你需要事先聲明變量的 '類型'。
NSString *string = @"Hello"; 
  • 不能保存對象的其它類型的(或混凝土或原語)中相同的名稱
NSString *string = @"Hello"; 
int string = 9; // Not legal, compile type warning 

例如靜態的可變鍵入語言:Ja VA,Objective-C的等

動態類型語言:

  • 無需聲明對象類型。它將在運行時計算出來。

字符串=「你好」

  • 我們是允許更改對象類型相同的變量,如名稱必然要與賦值操作符的對象。
string = 'Hello' 
    string = 9 // Allowed 

例如動態類型語言:Python等

+5

-1靜態和動態類型與類型註釋/推理沒有任何關係。恰巧許多舊的靜態類型語言堅持使用類型註釋,但這是無關緊要的。有靜態類型的語言沒有類型註釋。 (例如Haskell。) – sleeparrow