动态语言 vs 动态类型语言

动态语言 VS 静态语言

动态语言

动态语言是一类在运行时可以改变其结构的语言

例如:新的函数、对象、甚至代码都可以被引进,已有的函数可以被删除或是其他结构上的变化

通俗点说就是运行时代码可以根据某些条件改变自身结构

主要的动态语言:Object-C、C#、JavaScript、PHP、Python 等

静态语言

与动态语言相对应的,运行时结构不可变的语言就是静态语言,如:Java、C、C++

Java 不是动态语言,但 Java 可以称之为「准动态语言」,即 Java 有一定的动态性

我们可以利用 反射机制 获得类似动态语言的特性,Java 的动态性让编程的时候更加灵活!

举例

动态类型语言 VS 静态类型语言

动态类型语言

动态类型语言的关键特性是它的类型检查的主体过程是在运行期而不是编译期进行的

静态类型语言

静态类型语言在编译期就进行了类型检查

举例

举几个很直白的例子!对于 Java,定义一个变量:

对于 JS,定义一个变量:

对于 Python,定义一个变量:

所以 Java 是静态类型语言;而 JS 和 Python 是动态类型语言

静态类型语言是判断变量自身的类型信息;动态类型语言是判断变量值的类型信息,变量没有类型信息,变量值才有类型信息