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

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

前言

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

强类型语言 与 弱类型语言

  1. 强类型语言
    强类型语言是一种强制数据类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。
    强类型语言不允许任意的隐式数据类型转换。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
    强类型语言主要包括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函数,并为每个参数指定不同的数据类型。在调用的时候,传入的实参类型,需要对应每一个形参所指定的数据类型。一句话就是,强类型语言从语言层面限制了函数的实参类型必须与形参类型相同。

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

    代码如下(JavaScript示例):

    var a = "5"
    var b = 4
    var c = a + b    // c => 54
    var 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函数,在调用的时候,由于并不知道每个形参的数据类型,因此可以随意的进行传入不同数据类型的实参。。一句话就是,弱类型语言从语言层面不会限制实参的类型。

  • 总结
    强类型语言是类型安全的语言,它有更强的类型约束,可以使错误更早暴露,代码更智能,编码更准确,重构更牢靠,也可以减少不必要的类型判断。
    弱类型语言是类型不安全的语言,弱类型语言中几乎没有什么约束。代码简单,可以随着环境的不同,自动变换类型。

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

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

    代码如下(JavaScript示例):

    var foo = "foo" // string 类型
    foo = 123       // number 类型
    
  2. 静态类型语言
    静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,变量声明过后,它的类型就不允许再修改。
    静态类型语言包括C、C++、C#、java等。

    代码如下(java示例):

    String str;    // String 类型的变量
    int count;     // int 类型的变量
    
  • 总结
    动态类型语言,运行阶段才能够明确变量类型,而且变量的类型随时可以改变。动态类型语言中的变量没有类型,但变量中存放的值是有类型的。
    静态类型语言,一个变量声明时,它的类型就是明确的。变量声明过后,它的类型就不允许再修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值