今天在群里聊天的时候,谈论到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. 建议你吃透这68个内置函数!
  2. IT人的八大修炼神器
  3. 推荐30个用于微服务的顶级工具
  4. Android属性动画 TypeEvaluator
  5. WebSocket学习
  6. 美国0封伊朗已经6天了,伊石油出口真归零了吗?
  7. java读mysql增量_如何复制行并在MySQL中使用自动增量字段插入同一个表?
  8. Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表
  9. Qt QDebug 打印自定义结构体
  10. xencenter如何安装Centos7虚拟机系统
  11. 从开锁到中年危机的杂谈
  12. eclipse汉化(傻瓜式)
  13. OpenCV--021:直方图规定化
  14. 安卓otg识别ntfs_你知道手机的OTG功能吗?学会用之后再也不担心内存不够了!...
  15. Ajax访问接口报错NET::ERR_CERT_REVOKED
  16. Daily record-November
  17. 11岁发现数学新定理,13岁登日本数学会学术会议,学界大佬:他是「可敬的数学家」...
  18. 云学堂丁云鹏:变成别人,还不如成为自己!
  19. 计算机网络常见的协议之ARP协议
  20. 数字图像处理中的一些概念

热门文章

  1. MySQL 1045登录失败解决方法
  2. java导入Excel(使用阿里巴巴的easyexcel)
  3. Redefinition of (enumerator/class) 错误总结
  4. 基于PHP的地铁售票系统
  5. 【ECCV2018】Unsupervised Hard Example Mining from Videos for Object Detection
  6. Hibernate与代理模式
  7. python串口发送数据_第六课python来写串口助手-串口发送数据
  8. Word简历中如何插入头像?
  9. 这家公司利用蜜罐技术捕获社会工程骗局
  10. 《淘宝店铺设计装修一册通》一1.2 前期准备