参考地址
解释型
概念: 解释器不产生新的目标代码文件,而是将源代码文件一边解释一边交给cpu执行,这两同时进行的
意义:
将源代码转化成机器可读的目标代码举例:
js
编译型
概念:编译器将源代码文件编译成机器可读的目标代码文件,然后交给cpu执行,分为编译和执行,两个先后步骤
意义:
将源代码转化成机器可读的目标代码举例:
java产生了.class文件
py产生了.pyc文件
动态语言
概念:
在代码的运行期才进行类型检查的语言,也就是在声明代码变量的时候可以不指定变量类型举例:
python,js
静态语言
概念:
在代码编译期就进行类型检查的语言,也就是在声明代码变量的时候需要指定变量类型举例:
java
强类型
概念:
强类型语言在变量声明时需要指定变量类型
不允许隐式转换,变量只有经过类型转换后,才能变成目标类型数据举例:
java,go
弱类型
概念:
弱类型在变量声明时不需要特别指定数据类型
允许编译器运行隐式转换,举例:
js,py
常见
- java: 编译型,强类型,静态语言
- js : 解释型,弱类型,动态语言
- py:编译型,弱类型,动态语言
问题1
- Q: java是强类型语言,为什么还可以进行隐式转换呢?
- A: java的一些基础数据类型会进行自动的向上转换,但是这不是真正意义上的隐式转换,而是调用了底层的隐式转换函数进行的。
隐式转换函数是以implicit关键字声明的带有单个参数的函数。这种函数将会自动应用,将值从一种类型转换为另一种类型