弱类型、强类型、动态类型、静态类型语言的区别

强和弱只是相对的

强类型:

语言运行时确保不会发生隐式的类型转换。(java、c#、python)

如下python代码执行报错:

字符串和数值不可以自动转化

>>> i=1
>>> s+i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str, not int

弱类型:

语言的运行时会隐式做数据类型转换。(javascript)

如下javascript代码可正确执行:

var s='aa';
var i=1;
alert(i+s);

字符串和数值可以自动转化

静态类型:

变量需要定义类型,编译时进行数据类型检查(java、c#)

即:变量有类型,编译时确定变量的类型,做类型检查

动态类型:

变量无需定义类型,编译时不进行数据类型检查,运行期才做类型检查(javascript、python)

即:变量没有类型,但值有类型

开发语言的类型见下图:

感谢知乎:
https://www.zhihu.com/question/19918532


原文出处:/show_1EF1MkIWD6XV.html