很多人会把静态类型同等为强类型,动态类型同等为弱类型。
其实不是。
它们可能在表现上有很多相似之处,但它们并不同等,因为他们在原理上不一样。

区分

强类型弱类型,关注的是是否允许隐式类型转换。
静态类型和动态类型,关注的是检查数据类型的时机。
所以,理论上,“强类型弱类型”与“静态类型动态类型”之间没有必然联系。

具体区别

静态类型是指在运行之前就检查数据类型的语言,比如java,它在被转换成中间码,也就是在编译的时候,就检查了数据类型。

动态类型是指,在运行的时候(runtime)才检查数据类型,比如php、javascript。

注意

有人可能会问,php就是弱类型,也是动态类型,java是静态类型,也是强类型,那从结果上来看,弱类型就是等于动态类型啊。
其实也不是,举个例子:python就是动态类型,它在但却是强类型语言。