先上结论:
强类型:偏向于不容忍隐式类型转换。譬如说 Haskell 的 int 就不能变成 double。
弱类型:偏向于容忍隐式类型转换。譬如说 C/C++ 语言的 int 可以变成 double,指针可以完全绕过类型系统。
弱类型相对于强类型来说类型检查更不严格,比如说允许变量类型的隐式转换,允许手动(显式)强制类型转换等等。强类型语言一般不允许这么做。
静态类型:编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。
动态类型:编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。譬如说你不能对一个数字 a 写 a[10] 当数组用。
动态类型语言编程时,永远不用给任何变量指定数据类型。该语言会在第一次赋值给变量时,在内部将数据类型记录下来。静态类型语言写程序时要声明所有变量的数据类型,相当于使用之前,首先要为它们分配好内存空间。
网友评论