动态类型静态类型,强类型弱类型
类型检查
类型检查:指验证操作接收的是否为合适的类型数据以及赋值是否合乎类型要求,类型检查一般是在编译器或解释器在编译或运行阶段时做检查。
动态类型检查(即运行时检查):检查发生在程序运行时,当涉及到具体的数据值时,即为动态类型检查;
静态类型检查:检查发生在编译阶段,检查所有涉及值的使用的操作、调用和赋值,在程序运行前排除潜在的类型错误
动态类型
动态类型语言(dynamically typed languages):赋值发生在程序运行阶段,显示声明不被要求。例如:
a = 3
静态类型(statically typed languages):信息在编译阶段就被需要,所有的变量类型必须被显示地声明。例如java中:
float x = 0.3
优缺点
静态类型(static): 编译阶段做更多处理,但是运行时性能更好,出错率低,灵活性低。
动态(Dynamic): 编译阶段更高效,但是运行时的类型检查会影响到性能,出错机会较大,灵活性更高。
强类型
强类型:指的是程序中表达的任何对象所从属的类型都必须能在编译时刻确定。通俗的来说,就是一旦给某个变量赋值了类型,那么该变量的就不能改变,且不能与其他类型混合使用。
例如下面这种情况就是错误的
a = 3
a = 3 + 'string' # 错误,int类型不能和string类型连接
弱类型
弱类型:弱类型语言也称为弱类型定义语言。与强类型定义相反,很容易与其他类型混合计算
例如:Javascript中:
var item = 5;
item = item + "string"; # 可以结合