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

前言

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

强类型语言 与 弱类型语言

  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 类型的变量
    
  • 总结
    动态类型语言,运行阶段才能够明确变量类型,而且变量的类型随时可以改变。动态类型语言中的变量没有类型,但变量中存放的值是有类型的。
    静态类型语言,一个变量声明时,它的类型就是明确的。变量声明过后,它的类型就不允许再修改。

编程语言分类 -- 强类型与弱类型、动态类型与静态类型相关推荐

  1. 动态语言,静态类型,强类型定义语言,弱类型定义语言,

    1 动态语言和静态语言 通常我们所说的动态语言.静态语言是指动态类型语言和静态类型语言.    1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时 ...

  2. 什么是编程语言的强类型,弱类型

    给你来个例子把 弱类型语言vbs: a=1 b=a+"1"+"a" //结果是11a,这里 a 成了字符串 c=a+1 //结果是2 ,这里a则是数字型 强类型 ...

  3. python类型提示包 检查静态类型_Pyright:微软提供的Python静态类型检查器

    ​ 改进您的编程技术和方法,成为一个更有生产力和创造性的Python程序员.本书探索了一些概念和特性,这些概念和特性不仅将改进您的代码,而且还将帮助您理解Python社区,并对Python哲学有深入的 ...

  4. 辨异 —— 不同的编程语言(编译型语言、解释型语言、动态语言、静态语言)...

    Java 越来越强大,覆盖领域也越来越多,变得无所不能的时候,和那些仅专注于一个领域的的编程语言相比,它反而显得不够专业: 1. 算符优先级 优先级意味着结合律: C/C++:位运算符(&|^ ...

  5. 静态类型/动态类型/强类型/弱类型

    C/C++是弱类型,并且是静态类型,因为可以容忍隐式类型转换,并且可以进行强制类型转换,然后编译的时候就已经直到变量的类型,所以是静态类型(类型错误引发的是语法错误) python是动态类型,强类型, ...

  6. 动态与静态类型编程语言(Statically Dynamically Typed Languages)

    动态与静态类型编程语言 1.类型检查 2. 静态类型语言 2. 动态类型语言 4. 两种类型语言的比较 区分「动态类型」与「静态类型」编程语言非常简单. 在此之前,让我们先看看「类型检查」. 1.类型 ...

  7. 编程语言 - 强弱/动静态类型 - 整理

    1.应用场景 了解编程语言的分类及显著的区别, 帮助理解编程语言的本质,和帮助快速学习一门新的语言. 2.学习/操作 1. 文档阅读 12 | 栈空间和堆空间:数据是如何存储的?-极客时间 2. 整理 ...

  8. int类型的实参与int*类型的形参不兼容_谁告诉的你们Python是强类型语言!站出来,保证不打你!...

    1. 真的能用隐式类型转换作为强弱类型的判断标准吗?最近有些学员问我,Python到底是强类型语言,还是弱类型语言.我就直接脱口而出:Python是弱类型语言.没想到有一些学员给我了一些文章,有中文的 ...

  9. C++动态类型与静态类型

    静态类型 编译时的类型,运行前就确定了,是变量声明时的类型或表达式生成的类型 动态类型 运行时才确定的类型,是变量或表达式表示的内存中的对象的类型 Quote* p = new b_Quote; // ...

最新文章

  1. 麦格纳软件公司绩效考核信息化管理解决方案
  2. 小鹤双拼记忆口诀_选择双拼之自然码
  3. JAVA中常用的逻辑运算符_Java中常用的运算符
  4. 哈工大理论力学第八版电子版_校史上的这些天(37)| 和你一起在“岁月”中读懂哈工大...
  5. 全奖博士招生,荷兰根特大学 ​IDLab 实验室,手语手势识别方向
  6. sql script: Calculating Days
  7. 支付宝辟谣交易 5 万受监控;App Store 宕机;谷歌抛弃 AI | 极客头条
  8. chr 13 java 替换_【转】ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)...
  9. 程序“[4176] char.exe: 本机”已退出,返回值为 0 (0x0)
  10. BurpSuite 通过google浏览器抓取https流量包
  11. Oracle 迁移至Mysql
  12. 大年初三,字节跳动“线上免费春节档”电影再升级,13部影片登场
  13. 定时器轮播图---(功能:自动轮播,左右箭头点击切换,点击圆点跳转图片)
  14. mybatis拦截器实现数据脱敏拦截器使用
  15. 企业信息化系统ERP篇
  16. 排他平方数(使用C语言基础)
  17. JavaFX报错:Class FIFinderSyncExtensionHost is implemented in both
  18. 陕西省2019计算机软考试题,2019湖北襄阳计算机软考程序员考试真题及答案解析...
  19. 编程练习题_2.12
  20. Codeforces Round #631 (Div. 2) - Thanks, Denis aramis Shitov! E. Drazil Likes Heap(贪心+模拟)

热门文章

  1. H5CS3酷炫登录注册静态页面
  2. 道德沦丧的电商推广app开发②
  3. 大数——二进制转换(hdu2051)
  4. 嵌入式知识概要(1)
  5. Linux ar命令
  6. 查看Linux系统运行状态(命令汇总)
  7. LeetCode刷题(Python)——汉明距离
  8. 【今日CV 计算机视觉论文速览】Wed, 27 Mar 2019
  9. System memory,AGP memory和video memory
  10. 06 使用VS2012开发简单控制器程序 1214