强和弱只是相对的
强类型:
语言运行时确保不会发生隐式的类型转换。(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
