複製鏈接
請複製以下鏈接發送給好友

強類型

鎖定
強類型指的是程序中表達的任何對象所從屬的類型都必須能在編譯時刻確定。常見的強類型語言有JavaApexPython等。強類型語言在大規模信息系統開發中具有巨大優勢。
中文名
強類型
外文名
Strong type
性    質
語言類型
其他語言類型
弱類型、無類型
強類型語言
Java/Apex/Python等
應    用
適用於大規模信息系統開發

強類型基本信息

強類型是針對類型檢查的嚴格程度而言的,它指任何變量在使用的時候必須要指定這個變量的類型,而且在程序的運行過程中這個變量只能存儲這個類型的數據。因此,對於強類型語言,一個變量不經過強制轉換,它永遠是這個數據類型,不允許隱式的類型轉換。例如:假設定義了一個double類型變量a,不經過強制類型轉換那麼程序int b = a是無法通過編譯。常用的強類型語言有Java、C# 、Apex和Python等。
強類型是自定義類所具有的優勢,它使得對象處理的數據更容易被理解。因此,強類型語言在大規模信息系統開發中具有巨大優勢,特別是當設計者定義了由自定義類所組成的數據訪問層,並把設計向組織內的其他程序員發佈的時候。它可以通過類型檢查機制在編譯過程中發現許多容易被人忽視的錯誤,從而保證軟件的質量,使得大規模的軟件集成為可能。 [1] 

強類型三種類型

語言有無類型,弱類型和強類型三種。其中,無類型不檢查,甚至不區分指令和數據;弱類型的檢查很弱,僅能嚴格的區分指令和數據;強類型的則嚴格的在編譯期進行檢查。強類型語言在沒有強制類型轉化前,不允許兩種不同類型的變量相互操作。例如,弱類型語言允許變量類型的隱式轉換,允許強制類型轉換等,如字符串和數值可以自動轉化;而強類型語言一般不允許這麼做。下面舉例説明。
(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) 減少運行時刻的開銷。 [2] 
參考資料
  • 1.    谷敏,胡靜遠. 強類型面向對象動態SQL生成器的設計與實現[J]. 信息技術,2016,(09):114-120.
  • 2.    商陸軍. 面向對象的程序設計語言中的強類型問題[J]. 計算機學報,1991,(10):721-729.