強類型

強類型

強類型指的是程式中表達的任何對象所從屬的類型都必須能在編譯時刻確定。常見的強類型語言有C++、Java、Apex和Python等。強類型語言在大規模信息系統開發中具有巨大優勢。

基本信息

強類型是針對類型檢查的嚴格程度而言的,它指任何變數在使用的時候必須要指定這個變數的類型,而且在程式的運行過程中這個變數只能存儲這個類型的數據。因此,對於強類型語言,一個變數不經過強制轉換,它永遠是這個數據類型,不允許隱式的類型轉換。例如:假設定義了一個double類型變數a,不經過強制類型轉換那么程式int b = a是無法通過編譯。常用的強類型語言有Java、C# 、Apex和Python等。

強類型是自定義類所具有的優勢,它使得對象處理的數據更容易被理解。因此,強類型語言在大規模信息系統開發中具有巨大優勢,特別是當設計者定義了由自定義類所組成的數據訪問層,並把設計向組織內的其他程式設計師發布的時候。它可以通過類型檢查機制在編譯過程中發現許多容易被人忽視的錯誤,從而保證軟體的質量,使得大規模的軟體集成為可能。

三種類型

語言有無類型,弱類型和強類型三種。其中,無類型不檢查,甚至不區分指令和數據;弱類型的檢查很弱,僅能嚴格的區分指令和數據;強類型的則嚴格的在編譯期進行檢查。強類型語言在沒有強制類型轉化前,不允許兩種不同類型的變數相互操作。例如,弱類型語言允許變數類型的隱式轉換,允許強制類型轉換等,如字元串和數值可以自動轉化;而強類型語言一般不允許這么做。下面舉例說明。

(1)弱類型語言vbs:

a=1

b=a+"1"+"a" //結果是11a,這裡 a 成了字元串

c=a+1 //結果是2 ,這裡a則是數字型

(2)強類型語言C#:

int a=2

string b=a.ToString()+"1"+"a"

int c=a+1

有上述例子可以說明:弱類型的語言的東西沒有明顯的類型,它能隨著環境的不同自動變換類型;而強類型則沒這樣的規定,不同類型間的操作有嚴格定義,只有相同類型的變數才能操作。

異同點

(1) 不管是強類型還是弱類型,變數都有兩個屬性:類型和值;即,弱類型的變數同樣有類型。 不管是哪一種程式語言,其中使用的變數,都既有類型,又有值。強類型的變數類型,必須在原始碼中明確定義,稱之為“變數聲明”,弱類型的變數類型則是無需聲明的,由解釋器解釋。但是,這並不意味著,弱類型的變數就沒有類型這一概念了,舉例來說,PHP的gettype就是返回該變數“當前”的類型。

(2) 強類型的變數類型是不能改變的,弱類型變數是隨需改變的,這是強弱的真正含義。 強類型的變數一經聲明,就只能存儲這種類型的值,其他的值則必須通過轉換之後才能付給該變數,有編譯器自動理解的轉換,也有由程式設計師明確指定的強制轉換。但是,弱類型的變數類型則是隨著需要不斷轉換。

(3)強制轉換並沒有改變變數類型。強類型語言有個“強制轉換”,這改變的是變數的值的類型,以便進行賦值,而沒有改變變數的類型。變數的類型是不允許改變的。

強類型的優點

(1) 編譯時刻能檢查出錯誤的類型匹配,以提高程式的安全性;

(2) 可以根據對象類型最佳化相應運算,以提高目標代碼的質量;

(3) 減少運行時刻的開銷。

相關詞條

相關搜尋

熱門詞條

聯絡我們