强类型、弱类型、静态类型、动态类型的区别

本文探讨了编程语言中的弱类型与强类型、静态类型与动态类型的特性及区别,并列举了各类别下代表性的编程语言,如C/C++、JS、Python等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

弱类型:容忍隐式类型转换。比如js中:

1+'a'
> '1a'

以及c中double可以隐式转换为int

强类型:不容忍隐式类型转换。比如python中:

>>> "1"+2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

静态类型:编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误(能做到运行前错误检查,故语言本身就能提供类型报错、代码提示、自动补全等功能,IDE也能提供各类服务,比如智能的rename、快捷进入相应类内部阅读代码等)。

动态类型:编译的时候不知道每一个变量的类型,运行时进行类型检查和绑定,因为类型错误而不能做的事情是运行时错误。

var a = 1;
typeof a;
> "number"
a = 'aa'
typeof a;
> "string"

各种类型语言列举:

弱类型、静态类型 : C/C++
弱类型、动态类型: JS/VB/Perl/PHP
强类型、静态类型 :Java/C#
强类型、动态类型 :Python, Scheme
静态显式类型 :Java/C
静态隐式类型 :Ocaml, Haskell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值