今天在群里聊天的时候,谈论到python和Java相比居然不用定义变量类型。我心血来潮就去百度了一番动态语言和静态语言的具体区别,一番百度才发现自己原来的想法不够全面,所以在这里做个笔记。

基本概念

  • 动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定变量的数据类型,比如Python和Ruby
  • 静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量在使用前要声明变量的数据类型,这样的好处是把类型检查放在编译期,提前检查可能出现的类型错误,典型代表C/C++和Java
  • 强类型语言,一个变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。举个例子:如果你定义了一个double类型变量a,不经过强制类型转换那么程序int b = a无法通过编译。典型代表是Java。
  • 弱类型语言:它与强类型语言定义相反,允许编译器进行隐式的类型转换,典型代表C/C++。


如果所有程序都是灰的,strongly typed
否则如果存在红色的程序,weakly typed
编译时排除红色程序,statically typed
运行时排除红色程序,dynamically typed

总结

上一个图就很清晰了

静态语言和动态语言的区别相关推荐

  1. 静态语言和动态语言区别

    静态语言和动态语言的区别: 区别一: 静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型:比如C/C++ 是静态类型语言的典型代表,其他的静态类型语言还 ...

  2. 【编程语言】静态语言与动态语言的本质区别以及其应用场景

    从宏观的语言层面来说,编程语言类型共分为两大类:静态语言(又叫强类型语言)与动态语言(又叫弱类型语言).静态语言通常是低级(底层)语言,动态语言一般为高级(应用)语言,静态语言运用通常是通过编译器,而 ...

  3. vs如何把c语言编译成静态库,VS中Debug和Realease、及静态库和动态库的区别整理(转)...

    一.Debug和Realease区别产生的原因 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程序在代码 ...

  4. 静态语言和动态语言,解释和编译

    前提 通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别.源码要想执行,必须先转换成二进制指令. 所谓二进制指令,也就是由 0 和 1 组成的机 ...

  5. Typescript笔记之基础知识(1):强类型语言和弱类型语言、静态语言和动态语言

    foreword(前言) 这是本人关于Typescript的第一篇笔记,之所以选择将"强类型语言和弱类型语言.静态语言和动态语言"作为第一个想要去总结的主题,是因为个人觉得它很重要 ...

  6. [转载] 【Python进阶】4-2 多态 | 什么是多态 / 静态语言vs动态语言 / python中多态

    参考链接: Python中的多态 文章目录 1.什么是多态"开闭"原则 2.静态语言 vs 动态语言小结 3.python中多态 1.什么是多态 要理解什么是多态,我们首先要对数据 ...

  7. 如何理解静态语言和动态语言

    类型系统按照类型检查的时机来分类,分为动态类型和静态类型,动态是在运行时候才检查数据类型,静态是在编译时候检查数据类型 静态语言是在编译期间就会做数据类型的检查,也就是要在写代码的时候就声明变量的数据 ...

  8. 【Java核心技术卷】静态语言和动态语言对比

    这里用JavaScript.C.Java语言进行对比分析: C语言是静态语言.弱类型语言. Java语言是静态语言.强类型语言. JavaScript语言是动态语言.弱类型语言. 静态类型语言.动态类 ...

  9. 静态页面和动态页面的区别

    静态页面和动态页面的区别 一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Requ ...

  10. web 静态页面和动态页面的区别

    文章目录 一.静态web页面: 二.动态web页面: 为什么需要web服务器?(web server) 三.关于两者区别的简单直接的描述 四.实验测试 一.静态web页面: 1.在静态Web程序中,客 ...

最新文章

  1. 禁止 Python 子类覆盖父类方法
  2. 计算机二级报名学校白名单,干货丨2021机器人编程赛事+等级考试攻略之教育部白名单赛事篇...
  3. gitbook新版本 build命令导出的html不能跳转?
  4. JavaWeb --第三章 HTTP协议详解
  5. 自动配置jdk_JDK 15中自动自动发送更好的NullPointerException消息
  6. SpringBoot yaml的配置及使用
  7. 九、XML和Json的特点
  8. svn回退后如何再还原_设计师如何管理自己的文档
  9. shell中的基础命令
  10. 【前端杂记】断点续传
  11. 工控协议——S7通讯协议
  12. 如何下载国家自然科学基金申请书的模板
  13. 第十一章 方差分析表(analysis of variance table)ANOVA TABLE
  14. 密码学入门(7):数字签名和证书
  15. 电脑或网页打开很慢是什么原因?
  16. python生成扑克牌并实现比较大小玩法
  17. mac配置git公钥
  18. 2122 还原原数组(枚举,双指针)
  19. Mac idea java 代码的前进后退 代码的撤销和前进快捷键
  20. 写面经攒人品,分享我的贝壳客户端面经,附带个人总结的答案。

热门文章

  1. 解决MySql 1045 Access denied for user ‘root‘@‘localhost‘ (using password: YES)
  2. Hive查询报partion错误
  3. canon相机api中文_从提示框:协调双引导盒,升级佳能相机和简便的键盘清洁
  4. python tkinter 窗口禁止编辑_Tkinter Toplevel 禁止主窗口功能
  5. 拼多多前端笔试题(一)
  6. 在iis服务上发布asp.net网站操作步骤,以及iis注册以及简单配置
  7. CentOS7 安装java 环境 摘抄
  8. 自贡市计算机编程学校,自贡职业技工学校2021年有哪些专业
  9. java if打折怎么算_Java封装商场打折策略(Strategy模式)
  10. 新疆伊犁2010年2月17日特大车祸