强类型与弱类型,静态类型和动态类型
首先强弱是相对的。
强类型:
每个变量和对象都必须声明类型,在编译时确定好类型了,执行时不能更改。偏向于不容忍隐式类型转换。譬如说haskell的int就不能变成double。
弱类型:
编译时不确定类型,执行时根据语义确定是哪种类型。通俗地说,弱类型偏向于容忍隐式转换,把不同类型的变量放在一起运算。
静态类型:
编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。
动态类型:
编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。譬如说你不能对一个数字a写a[10]当数组用。
各种语言强弱和静动态关系: