强类型与弱类型,静态类型和动态类型

首先强弱是相对的。

强类型:

每个变量和对象都必须声明类型,在编译时确定好类型了,执行时不能更改。偏向于不容忍隐式类型转换。譬如说haskell的int就不能变成double。

弱类型:

编译时不确定类型,执行时根据语义确定是哪种类型。通俗地说,弱类型偏向于容忍隐式转换,把不同类型的变量放在一起运算。

静态类型:

编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。

动态类型:

编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。譬如说你不能对一个数字a写a[10]当数组用。

各种语言强弱和静动态关系:

强类型与弱类型,静态类型和动态类型