首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

程式設計中判斷變數資料類型的方法:反射與型別系統

     編輯:程式設計綜合問答

靜態類型語言(Java、C#、C++)

  • 編譯期已確定變數型別,原始碼中即可知(int a; 即為 int)。
  • 運行期需檢查物件實際型別:使用反射。
    • Java:obj.getClass()、obj instanceof Type、Class.forName()。
    • C#:obj.GetType()、obj is Type、typeof(Type)。
    • C++:typeid(obj)(需 RTTI)、dynamic_cast。

動態類型語言(Python、JavaScript、Ruby)

  • 變數無型別,值有型別。運行期隨時可查:
    • Python:type(obj)、isinstance(obj, cls)。
    • JavaScript:typeof val、val.constructor.name、Object.prototype.toString.call(val)。

「給一個數,如何判斷類型」的實務回答

  1. 若為原始碼中的字面常數(123, 3.14),直接看語法:整數字面值預設 int,帶小數點預設 double/float。
  2. 若為變數/參數,查看宣告處型別宣告(靜態語言)或運行期印出 type()(動態語言)。
  3. 若為序列化資料(JSON、Protobuf),依 Schema 定義推斷。

參考資源

知乎:如何判斷一個變數的類型?

結語

型別判斷核心在於「編譯期靜態已知」vs「運行期動態檢查」,選擇適合語言的反射/內建 API 即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved