静态/动态类型、强/弱类型语言的区别

静态类型语言
静态类型指的是在创建一份数据时,需要显式指明该数据的类型。通常情况下,这些数据的类型一旦被定义,在程序的整个生命周期也不再改变。
比如:
这段C语言代码

int a = 5;
int b = 28;

动态类型语言
动态类型的编程语言在创建数据时,往往不需要指明该数据的类型,而且数据的类型也会随着值的改变而改变。
在这里插入图片描述
编程语言会根据赋予数据的值进行猜测或者推断。对于上面的第一行代码,python 知道 42 是一个整数,将 42 赋值给变量 myNumbers,python 也会推断出 myNumbers是一个整数类型。
在这里插入图片描述
而在Java中这是不被允许的:
在这里插入图片描述
常见的静态类型语言有:C/C++/Java等
常见的动态类型语言有:Python/JavaScript等
强/弱类型语言:
强类型语言在遇到与类型定义明显矛盾的运算时,一般会当做一种语法错误,而不会尝试对值的类型进行转换。
比如这段C++代码:

#include <iostream>
int main() {
    int a = 5;
    std::string b = "5";
    std::cout << (a + b);
    return 0;
}

会报错:
在这里插入图片描述
而弱类型语言恰好相反,会猜测程序员的意图,并对其中一些值的类型进行转换,已让程序继续执行。
PHP和JavaScript是弱类型语言
但需要注意,与静态/动态之间存在一条明确的界限不同,语言的强/弱是一个范围,语言可以表现出不同程序的强/弱。有些文章说 C++ 是强类型,也有文章说 C++ 是弱类型,这就是原因所在。

参考文章:

  1. https://www.cnblogs.com/beatle-go/p/17973165
  2. 一文彻底弄懂:解释、编译、动态、静态、动态类型、静态类型、强、弱语言 - 知乎用户M7ObOK的文章 - 知乎
    https://zhuanlan.zhihu.com/p/564444446
  3. 静态类型与动态类型编程语言之间的区别 - 酷python的文章 - 知乎
    https://zhuanlan.zhihu.com/p/109803872
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值