程式語言筆記:型別系統
型別是什麼? 「型別」是電腦理解「資料的意義」的方式。 變數能儲存的資料種類 (ex:int、float、char、string、boolean) 變數能進行的操作 (ex:加減法、比較、串接) 編譯器或直譯器該如何管理記憶體與運算 簡單舉例說明: int a = 10; string b = "10"; 上面 a 是數字,b 是文字。 強型別 vs 弱型別 語言在不同型別之間容不容易被自動轉換,容易的是弱型別,不容易是強型別。 直觀上最大的差異感大概是:型別錯了是「直接報錯」還是「幫你偷偷轉換」。 下面直接整理成表,比較一目了然: 強型別 弱型別 定義 不允許或嚴格限制隱式型別轉換 允許自動轉換不同型別 代表語言 Python、Java、C#、Rust JavaScript、PHP(部分)、Perl 優點 避免隱性錯誤,程式更穩定 撰寫更靈活,快速原型方便 缺點 需要明確轉型,程式碼較冗長 容易出現非預期結果 靜態型別 vs 動態型別 兩者差在型別什麼時候被確定,需要先宣告、且執行期間不能變換的是靜態,反之為動態。 一樣放比較表: 靜態型別 動態型別 型別確認時機 編譯時 執行時 宣告方式 需明確宣告型別 型別由執行時自動判斷 代表語言 C、C++、Java、Rust、Go Python、JavaScript、Ruby 優點 錯誤早期偵測、效能佳 靈活快速、撰寫方便 缺點 需要較多樣板程式碼 錯誤可能在執行期才爆出 語言型別分類 下面列舉一些程式語言和它的型別。 強/弱型別 動/靜態型別 C 強 靜態 C++ 強 靜態 Java 強 靜態 Python 強 動態 PHP 弱 動態 JavaScript 弱 動態 Go 強 靜態 Lua 弱 動態 小結 ...