1.强类型和弱类型
- 强类型
对类型检查严格,任何变量在使用时必须指定类型,一个变量指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型 - 弱类型
数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。 - 例子
// C# (强类型)
int a = 1;
a = "123"; // 会报错,无法将类型 "string" 隐式转换为 "int"
// lua (弱类型)
local a = 1
a = "123" // 不会报错
2.编译型和解释型
- 编译型
在编译时翻译(源代码 -> 二进制指令),生成一个可执行程序,使用的转化工具称为编译器 - 解释型
在运行时翻译,不生成可执行程序,使用的转化工具称为解释器
3.静态类型和动态类型
- 静态类型
在编译期间检查数据类型 - 动态类型
在运行期间检查数据类型