最近用空闲时间看了一本书<冒号课堂>,内容虽然宽泛,但是仍读到了一些有用的知识,并纠正了一些关于语言上的错误概念.
数据类型包含两个要素:
数据类型的意义
限定一个变量的数据类型,就意味着限制了该变量的取值范围和所参与的运算,这从一定程度上保证了代码的安全性
动态类型语言 类型检查发生在运行期间,编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误.
python,php,javascript是动态类型的
静态类型语言 类型检查发生在运行之前,编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误.譬如说你不能对一个数字 a 写 a[10] 当数组用,并且可以在运行期间改变变量的类型
例如: a = 0; a = []
;
java, C, C++是静态类型的
Haskell就是不需要显式声明类型的,但是它是静态的
强类型: 偏向于不容忍隐式类型转换.
例如: python不容许'a'+1;
>>> 'a'+1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Can't convert 'int' object to str implicitly
所以,python,ruby,java是强类型语言.
弱类型: 偏向于容忍隐式类型转换.
例如: javascript容许'a'+1
> 'a'+1 'a1'
所以: C,PHP都是弱类型语言