首页
学习
活动
专区
圈层
工具
发布

通俗的方式理解动态类型,静态类型;强类型,弱类型

引言 今天和一个朋友讨论 C++ 是强类型还是弱类型的时候,他告诉我 C++ 是强类型的,他和我说因为 C++ 在写的时候需要 int,float 等等关键字去定义变量,因此 C++ 是强类型的,我告诉他...什么是动态(静态)类型,强(弱)类型 基础版本 编译时就知道变量类型的是静态类型;运行时才知道一个变量类型的叫做动态类型。...根据图我们可以严格的定义动态类型,静态类型;强类型,弱类型 强类型:如果一门语言写出来的程序在红色矩形外部,则这门语言是强类型的,也就是上面说的 well behaved 弱类型:如果一门语言写出来的程序可能在红色矩形内部...是强类型的。...另外,由于强类型语言一般需要在运行时运行一套类型检查系统,因此强类型语言的速度一般比弱类型要慢,动态类型也比静态类型慢,因此在上述所说的四种语言中执行的速度应该是 C > Java > JavaScript

3.3K40

编程语言的弱类型、强类型、动态类型、静态类型的解释

编程语言的弱类型、强类型、动态类型、静态类型的解释 一、弱类型和强类型的区别 ​ 弱类型语言和强类型的语言的区分点,在于 是否支持隐形类型转化 越支持隐式类型转化,越是弱语言类型; 越不支持隐式类型转化...,越是强类型。...要注意的是:强类型和弱类型并没有严格意义上的定义 像是 C++,允许某些类型的隐式转换的同时却又对类型要求严厉,不能将一个指针随意地转换为一个整数。我们很难定义它究竟是弱类型语言还是强类型语言。...强类型和弱类型的存在只是为了让我们更好的理解语言特性;如强类型语言在类型安全性上有更严格的要求,而弱类型语言在类型安全性上通常更为放松。...二、动态类型和静态类型的区别 很多初学者很容易把这两个概念和弱类型,强类型的概念混淆,其实这是两个完全不同方向上的概念 静态类型语言: 是指在编译时变量的数据类型必须确定的语言,静态类型语言要求在使用变量之前必须声明该变量的数据类型

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    什么是强类型、弱类型、动态类型、静态类型语言

    强类型语言 强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就死该数据类型。 强类型语言包括:Java、.net、Python、C++等语言。...其中Python是动态语言,是强类型定义语言,是类型安全的语言,Java是静态语言,是强类型定义语言,也是类型安全的语言。 强类型接口设计 使用 feigh 设计强类型接口 ? ?...int类型,所以sum为5-5=0; 优缺点 强类型语言和弱类型原因其判断的根本是是否会隐形进行语言类型转变。...强类型原因在速度上可能略逊于弱类型语言,但是强类型定义语带来的严谨性又避免了不必要的错误。 ?...静态类型语言 静态类型语言与动态类则刚好相反,它的数据类型在编译期间检查,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他静态语言还有C#、Java等。

    9.1K30

    弱类型、强类型、动态类型、静态类型语言的区别是什么

    有了上面的概念,再讨论强、弱类型,静态、动态类型 强、弱类型 强类型strongly typed: 如果一种语言的所有程序都是well behaved——即不可能出现forbidden behaviors...这样的结果是:容易产生forbidden behaviours,所以是弱类型的 动态、静态类型静态类型 statically: 如果在编译时拒绝ill behaved程序,则是statically typed...譬如Ocaml是静态类型的,但是也可以不用明确地写出来。。...Ocaml是静态隐式类型 静态类型可以分为两种:如果类型是语言语法的一部分,在是explicitly typed显式类型; 如果类型通过编译时推导,是implicity typed隐式类型, 比如ML和...Haskell 4.下面是些例子 无类型: 汇编 弱类型、静态类型 : C/C++ 弱类型、动态类型检查: Perl/PHP 强类型、静态类型检查 :Java/C# 强类型、动态类型检查 :Python

    2.4K30

    强类型 JavaScript 的解决方案

    JavaScript 是一种弱类型(或称动态类型)语言,即变量的类型是不确定的。...弱类型的好处是十分灵活,可以写出非常简洁的代码。但是,对于大型项目来说,强类型更有利,可以降低系统的复杂度,在编译时就发现类型错误,减轻程序员的负担。...一直有人尝试,让 JavaScript 变成强类型语言。在官方最终支持强类型之前,本文介绍三种现在就可用的解决方案。...它的最大特点就是支持强类型和 ES6 Class。 首先,安装TypeScript。 $ npm install -g typescript 然后,为变量指定类型。...Flow 的用法很多,我只举几个例子。前文介绍的两种工具,只能检查声明了类型的变量,而 Flow 可以推断变量类型。

    1.4K50

    Typescript 强静态类型初探

    TypeScript 提供可选的强静态类型 TypeScript 的最大亮点自然就是提供静态类型(type)。...我们可以对变量设置类型,比如你给 count 变量设置为数字类型(number),如果你从 input 元素提取 value (string 类型)赋予给 count,如果你忘记将其转换为数字,编译是不会通过的...当然类型不是强求设置的,为了兼容 JavaScript,你也可以设置为 any 类型。所谓 any 类型是一个特殊的类型,任何类型的的值都可以赋予给它。...TypeScript 声明的变量一旦指定类型,它的类型就再也不能修改。这样变量就具有可预测性。 JavaScript 的变量可以赋予任何类型的值。...有时候,我们会看到一个变量在执行的过程中变成各种各样的类型,一会是字符串,一会是对象,非常不好预测,尤其是有复杂条件判断的时候。

    46210

    【赵渝强老师】PostgreSQL锁的类型

    在并发环境下为了解决并发一致性问题保证事务的隔离性,PostgreSQL采用了锁的机制。当一个事务在进行操作时会对操作的数据进行加锁,从而限制另一个事务的操作。为保证效率和想,加锁的粒度不宜太大。...加锁的意义就在于当多个会话同时访问数据库的同一数据时,为所有会话提供高效的数据访问,并同时维护严格的数据一致性,从而实现数据的多版本并发控制。...多版本并发控制的英文名称是MultiversionConcurrencyControl,简称MVCC。它是指每个SQL语句看到的都只是当前事务开始的数据快照,而不用去关心底层数据的当前状态。...MVCC避免了传统的数据库系统的锁定方法,将通过锁争夺最小化的方法来达到多会话并发访问时的性能最大化目的。PostgreSQL提供了多种类型的锁模式用于控制对表中数据的并发访问。...视频讲解如下:腾讯云提供技术支持播放播放静音0:00/1:36加载完毕:0%0:00进度:0%媒体流类型直播-1:36超高清高清标清流畅240P自动,选择自动返回直播播放速度2x1.5x1.25x1x,

    38210

    ReasonML——新的前端强类型语言简介

    在当前的选择中,有两个流派,都能够解决 JavaScript 弱类型语言带来的弊病,给前端带来强类型语言的支持。...第二个是以微软开发的 TypeScript 为首的前端新强类型语言——这类语言的优势是从根本上支持了强类型语言,可以在编译时通过类型推导与判断来从根本上解决类型转换问题,约束开发模型。...但是,这类语言的缺点也非常明显,如果需要支持相关的类型检测和推导,那么就需要对原有的代码进行改造,必定会花费一定的人力。在强类型语言中,也分为了两种类型。...从这个介绍中我们可以知道, ReasonML 是从 OCaml 语言衍生出来的,可以支持 JavaScript 的新的强类型语言。...总结 ReasonML 是一门比 TypeScript 约束严格的多的强类型语言(TypeScript 编译报错可以选择忽略掉,不影响使用)。强类型语言对于大型的项目开发来说,确实可以带来明显的优势。

    2.3K30

    Python「强类型」or「弱类型」?90% 的人说不清

    用更简单的术语,类型检查仅仅就是查看变量和它们的类型,然后说这个表达式是合理的。 因此,现在我们知道类型检查是什么,明白这些术语真的很简单。...2.3 灵活性和出错 静态类型: 运行时出错机会更小,但是提供给程序员的灵活性不好 动态类型: 提供更多的灵活性但是运行时出错机会相对更大 2.4 记住 各种语言按照动态/静态,弱类型/强类型的划分...3 什么是强类型/弱类型? 首先看下什么是强类型,在强类型中,不管在编译时还是运行时,一旦某个类型赋值给某个变量,它会持有这个类型,并且不能同其他类型在计算某个表达式时混合计算。...在静态类型语言中,类型检查发生在编译阶段;动态类型语言,类型检查发生在运行阶段。 强类型语言有更强的类型检查机制,表达式计算中会做严格的类型检查;而弱类型语言允许各种变量类型间做一些运算。...Python是一门动态的(dynamic)且强类型(strong)语言

    3.9K30

    编程语言傻傻分不清:弱类型、强类型、动态类型、静态类型

    有时候去面试,像iOS开发岗位,面试官会顺着运行时和动态性往下问,如果你不知编程语言的一些基本知识就懵逼了!作为一个开发者,你连弱类型、强类型、动态类型、静态类型语言傻傻分不清吗?...它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。...,但是强类型定义语言带来的严谨性能够有效的避免许多错误。...举例说明 Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言) ---...有了上面的概念,再讨论强、弱类型,静态、动态类型 强、弱类型 强类型strongly typed: 如果一种语言的所有程序都是well behaved——即不可能出现forbidden behaviors

    13.6K32

    强类型与弱类型语言关于存取对象(数据)的问题

    在旧的业务流程加入一个“拦截”,原来从前端表单提交到后台的处理逻辑延后处理,本质上是一个异步化的处理过程。 此时将表单参数存储到数据库,在适当的时刻“拦截”结束通过时调用原来的处理逻辑。...-> A', 从数据库取出原来的参数对象,希望A'能够完全表达A, A' == A,包括参数类型与顺序。...这里的Person类型无法确定,调用realService方法也无法做到,需要反射? PHP的示例代码 <?...public $name; public $data; public static findOne($condition) {} public save() {} } 弱类型语言就没有这样的麻烦...虽然这里讨论的示例中只有一个参数,但是多个参数的情况下,PHP也能支持。 感谢@Tranch提供的PHP示例代码

    1.2K90

    C++11强类型枚举

    为了解决以上传统枚举类型的缺陷,C++11引入了强类型枚举解决了这些问题。 2.强类型枚举 非强作用域类型,允许隐式转换为整型,枚举常量占用存储空间以及符号性的不确定,都是枚举类缺点。...强类型枚举使用enum class语法来声明: enum class Enumeration{VAL1,VAL2,VAL3=100,VAL4}; 强类型枚举具有如下几个优点: (1)强作用域,强类型枚举成员的名称不会被输出到其父作用域...具体方法是在枚举名称后面加上":type",其中type可以是除wchar_t以外的任何整型。...3.C++11对传统枚举类型的扩展 传统枚举类型为了配合C++11引入的强类型枚举,C++11对传统枚举类型进行了扩展。...(1)底层的基本类型可以在枚举名称后加上":type",其中type可以是除wchar_t以外的任何整型,比如: enum Type:char{Low,Middle,High}; (2)C++11中,枚举类型的成员可以在枚举类型的作用域内有效

    3.7K20

    强类型语言和弱类型语言,该怎么选择?

    强类型语言和弱类型语言是按照其类型系统的严格程度来区分的。 强类型语言: 强类型语言特点: 强类型语言要求变量在使用之前必须明确声明其类型,并且限制了不同类型之间的隐式转换。...在强类型语言中,变量的类型在编译时就被严格检查,如果存在类型错误,则编译会失败。 强类型语言通常需要进行显式的类型转换,以确保类型的一致性。...强类型语言优点: 更严谨的类型检查:强类型语言在编译时进行严格的类型检查,可以在编译阶段捕获类型错误,减少运行时错误的发生。这有助于提高代码质量和稳定性。...学习曲线较陡峭:由于强类型语言对类型的要求较高,学习和掌握强类型语言可能需要更多的时间和精力,特别是对于初学者来说。...区分强类型语言和弱类型语言的关键在于类型系统的严格性和类型转换的限制程度。强类型语言更加严格,要求显式声明和严格检查类型,而弱类型语言相对宽松,允许隐式类型转换和动态类型推断。

    53400
    领券