動態語言,靜態語言,強型別語言,弱型別語言的區別
阿新 • • 發佈:2019-02-19
靜態語言
靜態語言是在編譯時期就檢查資料型別的,所以必須在宣告變數的時候指定資料型別,否則編譯會不通過。例如C/C++,Java等
動態語言
動態語言是在執行時期才檢查資料型別的,所以在宣告變數的時候可以先不指定資料型別,因為在執行期間變數的資料型別是可變的。它會在執行的時候根據賦予變數的值,來判斷這個變數的資料型別,然後記錄下來。例如Javascript,PHP,Python等。
強型別語言
強型別語言是指,變數的資料型別一旦確定下來,就不能改變了,除非經過強制型別轉換。例如Java,C#,Python等。
弱型別語言
弱型別語言是指一個變數可以賦予不同資料型別的值,因為它可以進行隱式的自動型別轉換。例如Javascript,C/C++等。
無型別語言
其實除了上面說的以外,還存在一種無型別語言,例如彙編。網上關於彙編是否無型別語言的爭議還是比較多的,我倒是支援它是一種無型別語言,畢竟彙編是一種機器語言,在彙編中只有位元組,字,雙字等,也不存在資料型別的說法。
**
總結
**
1.動態/靜態語言,考慮的是什麼時候檢查資料型別。
2.強型別/弱型別語言,考慮的是對資料型別的要求嚴不嚴格。
3.動態/靜態語言,跟型別是否安全沒有必然關係。
4.強型別語言可以說是型別安全的語言,因為它對資料型別要求很嚴格,不能進行隱式的型別轉換。同此可見,弱型別語言則是型別不安全的語言。
5.強型別/弱型別語言和動態/靜態語言之間也沒有必然關係。