编程语言 - 强弱/动静态类型

1.应用场景

了解编程语言的分类及显著的区别, 帮助理解编程语言的本质,和帮助快速学习一门新的语言.

2.学习/操作

1. 动/静态类型

要理解一门语言是静态类型还是动态类型,最本质的判断方法是看在什么时间段对类型就行检测,静态类型的语言会在编译阶段就行检测,动态类型的语言会在运行时做类型检测!

 

比如C/C++是静态语言,会在编译阶段对类型就行检测,如果检测到不合法的语言,编译阶段就会报错!

而JavaScript就是动态语言,编译阶段不会做太多类型检测,而是等到运行时再检测变量的具体类型,这是动态语言性能低于静态语言的一个关键的地方。V8对这种动态性做了大量的优化!

 

 

2.强/弱类型

要理解一门语言是弱类型还是强类型,看变量在运行时,是否能够改变类型,

比如C/c++/javaScript,都可以在运行时将一种类型的变量,改成另外一种类型的,所以他们是弱类型,

而JAVA就不能运行过程中修改变量类型,所以是静态语言!

 

 

对于各种语言的类型,你可以参考下图:

编程语言 - 强弱/动静态类型_第1张图片

 

 

 

备注:
```
a = 1
a = 1.1
a = ''
a = []
a = {}
```
这段代码在js和python都是可以执行的,但python并不是一门弱类型的语言。
```
1 + '1'
```
这代码在js执行结果是'11',但在python执行却是报错的,因为python不理解一个整数和字符串相加的逻辑...
在js中,任何两个类型都是可以相加的,但是结果却不是一定是我们想要的。

 

 

后续补充

...

3.问题/补充

TBD

4.参考

https://time.geekbang.org/column/article/129596  //12 | 栈空间和堆空间:数据是如何存储的?

后续补充

...

 

 

你可能感兴趣的:(编程语言,强弱类型,动静态类型)