100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 编程语言分类 -- 强类型与弱类型 动态类型与静态类型

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

时间:2023-03-18 04:04:56

相关推荐

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

文章内容输出来源:拉勾教育 大前端高薪训练营

前言

在拉勾教育大前端高薪训练营学习的过程中,了解到编程语言除了以前常说的高级语言与低级语言之分,还可以根据类型安全分为强类型语言与弱类型语言,也可以根据类型检查分为静态类型语言与动态类型语言。

强类型语言 与 弱类型语言

强类型语言

强类型语言是一种强制数据类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。

强类型语言不允许任意的隐式数据类型转换。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。

强类型语言主要包括Java、.net 、Python、C++等。

代码如下(java示例):

String str; // String 类型的变量int count;// int 类型的变量

如上面的代码所示,定义了字符串 str 和整数 count 两个变量,如果不进行强制的类型转换,则不可以将字符串转化为整数,也不可以将整数转化为字符串。

代码如下(java示例):

public static void test(int w,string h,char s){// ...}test(1, "test", 'a')

在上面的代码中,定义了一个包含三个形参的test函数,并为每个参数指定不同的数据类型。在调用的时候,传入的实参类型,需要对应每一个形参所指定的数据类型。一句话就是,强类型语言从语言层面限制了函数的实参类型必须与形参类型相同。

弱类型语言

弱类型语言是一种弱类型定义的语言,是一种数据类型可以被忽略的语言。

弱类型语言允许任意的隐式数据类型转换。也就是说,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。

弱类型语言包括VBScript、PHP、JavaScript等。

代码如下(JavaScript示例):

var a = "5"var b = 4var c = a + b // c => 54var d = b - a // d => 1

在上面的代码中,当a 和 b 执行相加操作时,会将b转换成字符串(隐式转换);当a 和 b执行相减操作时,会将a转换成整数(隐式转换)。

代码如下(JavaScript示例):

function test(w, h) {var c = w * h }test(1, "2")test("1", 2)

在上面的代码中,定义了一个包含三个形参的test函数,在调用的时候,由于并不知道每个形参的数据类型,因此可以随意的进行传入不同数据类型的实参。。一句话就是,弱类型语言从语言层面不会限制实参的类型。

总结

强类型语言是类型安全的语言,它有更强的类型约束,可以使错误更早暴露,代码更智能,编码更准确,重构更牢靠,也可以减少不必要的类型判断。

弱类型语言是类型不安全的语言,弱类型语言中几乎没有什么约束。代码简单,可以随着环境的不同,自动变换类型。

动态类型语言 与 静态类型语言

动态类型语言

动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来,并且变量的类型随时可以改变。

动态类型语言包括Ruby、Python、JavaScript、PHP等。

代码如下(JavaScript示例):

var foo = "foo" // string 类型foo = 123 // number 类型

静态类型语言

静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,变量声明过后,它的类型就不允许再修改。

静态类型语言包括C、C++、C#、java等。

代码如下(java示例):

String str; // String 类型的变量int count;// int 类型的变量

总结

动态类型语言,运行阶段才能够明确变量类型,而且变量的类型随时可以改变。动态类型语言中的变量没有类型,但变量中存放的值是有类型的。

静态类型语言,一个变量声明时,它的类型就是明确的。变量声明过后,它的类型就不允许再修改。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。