首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编译型语言、解释型语言、静态类型语言动态类型语言、强类型语言、弱类型语言概念与区别

动态类型语言和静态类型语言 1、动态类型语言 很多网上资料把动态类型语言动态语言混为一谈,简直是误人子弟。动态类型语言动态语言是完全不同的两个概念。...动态类型语言是指在运行期间才去做数据类型检查的语言,说的是数据类型动态语言说的是运行是改变结构,说的是代码结构。动态类型语言的数据类型不是在编译阶段决定的,而是把类型绑定延后到了运行阶段。...3、注意: 相当一部分程序员,也包括曾经的我,认为解释型语言都是动态类型语言,编译型语言都是静态类型语言。这个也是错的。 swift是编译型语言但是它也是动态类型语言。...主要语言:JavaScript、PHP、C、C++(C和C++有争议,但是确实可以给一个字符变量赋整形值,可能初衷是强类型,形态上接近弱类型)3、注意: 一个语言是不是强类型语言和是不是动态类型语言也没有必然联系...Python是动态类型语言,是强类型语言。 JavaScript是动态类型语言,是弱类型语言。 Java是静态类型语言,是强类型语言

3.2K110

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

其中Python是动态语言,是强类型定义语言,是类型安全的语言,Java是静态语言,是强类型定义语言,也是类型安全的语言。 强类型接口设计 使用 feigh 设计强类型接口 ? ?...弱类型语言类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动。弱类型语言包括:VB,PHP,JavaScript等语言。其中VBScript是动态语言,是一种类型不安全的原因。...动态类型语言 动态语言是指在运行期间才去做数据类型检查的语言,也就是说动态类型语言编程时,永远不用给任何变量指定数据类型,该语言会在第一次赋值给变量时,在内部将数据类型记录下来。...Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。...对于动态语言与静态语言的区分,其根本在于判断是在运行期间去做数据类型还是在编译期间检查。 ?

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

    21.Go语言-静态类型动态类型

    第 21 章 静态类型动态类型 21.1 静态类型(static type) 静态类型就是变量声明时候的类型。...例如: // int 是静态类型 var number int // string 也是静态类型 var name string 21.2 动态类型(concrete type) 动态类型是程序运行时系统才能看见的类型...例如: // in 的静态类型为 interface{} var in interface{} // in 的静态类型为 interface{} 动态类型为 int in = 100 // in 的静态类型为...interface{} 动态类型为 string in = "《从0到Go语言微服务架构师训练营》" 通过上面的例子,可以看到我们定义了一个空接口 in ,它的静态类型永远是 interface{}...,但它可以接受任何类型,接受整型数据时,它的动态类型就为 int ;接受字符串型数据时,它的动态类型就变为 string 。

    28520

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

    编程语言的弱类型、强类型动态类型、静态类型的解释 一、弱类型和强类型的区别 ​ 弱类型语言和强类型语言的区分点,在于 是否支持隐形类型转化 越支持隐式类型转化,越是弱语言类型; 越不支持隐式类型转化...强类型和弱类型的存在只是为了让我们更好的理解语言特性;如强类型语言类型安全性上有更严格的要求,而弱类型语言类型安全性上通常更为放松。...二、动态类型和静态类型的区别 很多初学者很容易把这两个概念和弱类型,强类型的概念混淆,其实这是两个完全不同方向上的概念 静态类型语言: 是指在编译时变量的数据类型必须确定的语言,静态类型语言要求在使用变量之前必须声明该变量的数据类型...动态类型语言: 是在运行时确定数据类型语言。变量使用之前不需要类型声明,如python中,变量a=1,则a的类型就是整型,若a=”abc”,a的类型就是字符串。...三、总结 类型类型特点 强类型 不支持静态类型转化 弱类型 支持静态类型转化 静态类型 变量使用前需声明数据类型,程序运行过程中 数据类型不允许改变 动态类型 变量使用前不需要声明数据类型,程序运行过程中

    50210

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

    有时候去面试,像iOS开发岗位,面试官会顺着运行时和动态性往下问,如果你不知编程语言的一些基本知识就懵逼了!作为一个开发者,你连弱类型、强类型动态类型、静态类型语言傻傻分不清吗?...动态语言vs静态语言动态类型语言vs静态类型语言) Static typing when possible, dynamic typing when needed 型态系统(type system):...四种语言分类及其区别 动态类型语言(Dynamically Typed Language): 运行期间才做数据类型检查的语言,即动态类型语言编程时,永远不用给任何变量指定数据类型。...例如:ECMAScript(JavaScript)、Ruby、Python、VBScript、php Python和Ruby就是典型动态类型语言,其他各种脚本语言如VBScript也多少属于动态类型语言...举例说明 Python是动态语言,是强类型定义语言类型安全的语言); VBScript是动态语言,是弱类型定义语言类型不安全的语言); JAVA是静态语言,是强类型定义语言类型安全的语言) ---

    8.2K31

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

    有了上面的概念,再讨论强、弱类型,静态、动态类型 强、弱类型类型strongly typed: 如果一种语言的所有程序都是well behaved——即不可能出现forbidden behaviors...比如C语言的缓冲区溢出,属于trapped errors,即属于forbidden behaviors..故C是弱类型 前面的人也说了,弱类型语言类型检查更不严格,如偏向于容忍隐式类型转换。...;动态类型dynamiclly: 如果在运行时拒绝ill behaviors, 则是dynamiclly typed。...误区 大家觉得C语言要写int a, int b之类的,Python不用写(可以直接写a, b),所以C是静态,Python是动态。这么理解是不够准确的。...Haskell 4.下面是些例子 无类型: 汇编 弱类型、静态类型 : C/C++ 弱类型动态类型检查: Perl/PHP 强类型、静态类型检查 :Java/C# 强类型动态类型检查 :Python

    1.5K30

    函数式编程与面向对象编程: 静态类型语言的表达力 静态类型语言动态类型语言函数式编程与面向对象编程: 静态类型语言的表达力 静态类型语言动态类型语言

    例如C/C++/Java/C# 弱类型语言(动态类型语言) 是指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译型的)。...1 静态类型语言 静态类型语言类型判断是在运行前判断(如编译阶段),比如C#、java就是静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要,所以一般动态语言都会采用...不过,是不是动态类型语言与这门语言是不是类型安全的完全不相干的,不要将它们联系在一起!...2 动态类型语言 所谓的动态类型语言,意思就是类型的检查是在运行时做的,比如如下代码是不是合法的要到运行时才判断(注意是运行时的类型判断): ?...3 动态类型语言的表达力 动态语言通常更方便开发较小的项目,因为可以无需声明类型而节省了很多麻烦。

    1.4K10

    为什么说js是动态类型语言呢?

    JavaScript 被称为动态类型语言,是因为它的类型在运行时决定,并且可以在运行时动态改变变量的类型。...这些示例展示了 JavaScript 的动态类型特性,变量可以根据赋值动态改变类型,对象的属性可以在运行时动态添加或修改,函数的参数可以接受不同类型的值。...# ts VS js (动态 vs 静态) 动态类型语言直接运行时对变量检测,无需声明变量类型 静态类型语言需声明变量类型,在编译时对变量类型检测 JavaScript 被称为动态类型语言,因为它在运行时对变量的类型进行推断和处理...# typeScript 强是型语言还是弱类型语言类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型。...强制类型转换后 可正常输入 typescript 可以借助自身类型系统, 配合 eslint 的代码检查能力,跟进一步向强类型语言靠近。

    38210

    go语言学习之接口与动态类型

    本学习笔记全部以代码块的形式展示,具体的内容都包含在代码里: package types import ( "errors" "fmt" "reflect" ) // 接口与动态类型...Go 没有类,数据(结构体或更一般的类型)和方法是一种松耦合的正交关系。 // 3. 接口需要提供一个指定方法集的实现,任何提供了接口方法实现代码的类型都隐式地实现了该接口,而不用显式地声明。...Go 是唯一结合了接口值,静态类型检查(是否该类型实现了某个接口),运行时动态转换的语言。(js没有静态检查真是永远的痛!) // 5....Go 也拥有动态类型,即 duck typing(看起来像鸭子,那么就是鸭子),实现某个接口的类型可以作为实参传递给以该接口为形参的函数,并且还提供了静态检查。 // 6....Go 中的接口也可以实现 继承,即当一个类型包含(内嵌)另一个类型(实现了一个或多个接口)的指针时,这个类型就可以使用(另一个类型)所有的接口方法。

    35120

    Python动态类型解释型语言原理解析

    PYTHON是一门动态解释性的强类型定义语言:编写时无需定义变量类型;运行时变量类型强制固定;无需编译,在解释器环境直接运行。...动态和静态 静态语言:是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。例如:C++、Java、Delphi、C# 、go等。...动态语言:是在运行时确定数据类型语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。例如:Python、Ruby、Perl等。...他是一种动态类型语言。...动态类型语言是一种在运行期间才去确定数据类型语言,与静态类型相反。 VBScript 和 Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。

    1.8K30

    静态类型动态类型、id、instancetype

    静态类型 一个指针变量定义为特定的对象时,使用的是静态类型,在编译的时候就知道这个指针变量所属的类,这个变量总是存储特定类的对象,默认情况下所有的数据类型都是静态数据类型 @interface Person...error.png 动态类型 指程序直到执行时才确定对象所属的类 @interface Person : NSObject @property (nonatomic,strong...Person alloc]init]; [obj1 run]; id obj2 = [[Student alloc]init]; [obj2 eat]; return 0; } 动态数据类型的特点...]; id类型与instancetype id类型 id是一种通用的对象类型,它可以指向属于任何类的对象,可理解为万用指针,相当于C语言的void*数据类型,id也是一个动态数据类型,可以用来定义变量...,作为函数参数,作为函数返回值等等 id == NSObject*(万能指针) NSObject* 是一个静态类型 由于动态数据类型可以调用任意方法,所以有可能调用到不属于自己的方法,而编译时又不报错

    15510

    python风格——动态类型

    python是一门动态类型语言,这是由python的设计思想所决定的。在python中,我们编写对象接口而不是类型。我们关心的是一个对象能做什么,而不是关心它是什么。...动态语言 既然我们只关心只它能做什么,那么它是什么就没有那么的重要了。因此将python设计为一门动态语言就非常合理。 动态语言程序运行时,允许改变程序结构(例如引进新函数、删除旧函数)或变量类型。...动态语言中的变量本身是没有类型的,但是变量所绑定的值是有类型的,但是这个类型检查是发生在运行期的。 在python中,是没有类型声明的,直接给变量绑定值即可。...例如: s = "123" 一个有编写过静态类型语言经验的程序员,可能会想着如何在python判断数据类型是什么?...作为比较对象的C++语言,它的语法一致性奇差。

    58630

    Python动态类型简介

    在C语言中使用变量, 需先声明其类型, 如int a = 3, 而Python中直接 a = 3就行, Python怎么知道那代表了一个整数呢? ...在Python中类型是在运行过程中决定的, 而不是事先声明的. 像上面Python中运行赋值语句 a = 3, 代码中没有说明a是整数对象类型, 但一样也能工作, 可按如下思路来理解该原由....变量类型: 变量永远不会有任何的和它关联的类型信息或约束. 类型的概念是存在于对象中而不是变量名中. 变量原本是通用的, 它只是在一个特定的时间点, 简单地引用了一个特定的对象而已....动态语言类型和静态语言的有明显不同, 若能清楚的将变量名和对象划分开来, 动态类型是很容易理解的. >>> a = 3 从上面的概念来看, Python会执行三个步骤去完成这个操作: 1....类型属于对象, 而不是变量 Python中, 变量名没有类型, 对象才有类型. Python在每个对象上保存了类型标识, 和引用计数.

    72210

    动态类型思维与静态类型思维

    刚看到一句描述动态类型的话:“动态类型能够带来更高的灵活性——不需要接口或抽象类。”...这句话给我感觉是从一个动态类型语言(如Python)使用者的角度去说的,意思是我有了动态类型这种特性,我就不再需要先定好接口,然后实现类implement接口,才能调用指定的方法了。...而如果从一个Java使用者的角度去看动态类型,因为Java使用者总是习惯于使用接口和抽象类去约束代码,让代码在约定的框架内实现(我会很享受这种一切都在控制之中的感觉),所以面对动态类型时会有种失去“权力...其实接口有利有弊,动态类型也是有利有弊,但因为使用语言不同造成了思维和观点的差异,确实是蛮有意思的。熟练掌握多几种编程语言,领会其思想,跳出单个编程语言思维局限,确实是能够提升自身编程能力的。...——学习Groovy有感(Groovy可以算是动态的Java语言) Groovy教程:https://www.ibm.com/developerworks/cn/education/java/j-groovy

    55320

    静态语言动态语言

    奥义: 动态语言(弱类型语言): 在运行时,才确定数据类型,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。...静态语言(强类型语言): 在编译时,变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须声明数据类型。如Java、C、C++、C#... 运行时,结构不可变的语言。...Java是静态语言,但是Java也可以称为“准动态语言”。因为在Java具有一定的动态性,我们可以通过反射机制、字节码操作获得类似动态语言的特性。 补充: 弱类型语言是数据类型可以被忽略的语言。...强类型语言是必须强制确定数据类型语言,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这种数据类型。一个变量的类型是申明的时候就已经确定的,更安全。...动态语言思维不受约束,可以任意发挥,把更多的精力放在产品本身上;集中思考业务逻辑实现,思考过程就是实现过程。

    2.7K50

    动态语言-Python1.动态语言的定义

    1.动态语言的定义 动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。...它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。...例如JavaScript便是一个动态语言,除此之外如PHP、Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。...所以,玩动态语言的时候,小心动态的坑! 那么怎么避免这种情况呢?请使用__slots__, 5....__slots__ 动态语言与静态语言的不同 动态语言:可以在运行的过程中,修改代码 静态语言:编译时已经确定好代码,运行过程中不能修改 如果我们想要限制实例的属性怎么办?

    77120

    【Groovy】Groovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )

    文章目录 前言 一、Groovy 动态语言 二、Groovy 中的变量自动类型推断及动态调用 三、Java 中必须为变量指定其类型 前言 Groovy 是动态语言 , Java 是静态语言 ; 一、Groovy...动态语言 ---- Groovy 语言动态语言 , 其类型是在运行时进行确定的 , 如使用 def name 声明一个变量 , 声明时不指定变量类型 ; 在运行时为其赋值一个 String 类型变量或常量..., name = "Tom" 则该声明的变量 , 在运行时会被自动推断为 String 类型变量 ; Groovy 的 变量 , 方法 , 函数实参 的类型 , 都是在运行时推断与检查的 ; 二、Groovy...中的变量自动类型推断及动态调用 ---- 在 Groovy 中 , 如果声明 class Groovy { static void main(String[] args) {...---- 在 Java 中 , 如果声明 Object 类型变量 , 为其赋值一个 String 类型常量 , public class Java { public static void main

    2.1K30

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

    根据图我们可以严格的定义动态类型,静态类型;强类型,弱类型类型:如果一门语言写出来的程序在红色矩形外部,则这门语言是强类型的,也就是上面说的 well behaved 弱类型:如果一门语言写出来的程序可能在红色矩形内部...,则这门语言是弱类型的,也就是上面说的 ill behaved 静态类型:一门语言在编译时排除可能出现在红色矩形内的情况(通过语法报错),则这门语言是静态类型动态类型:一门语言在运行时排除可能出现在红色矩形内的情况...另外,由于强类型语言一般需要在运行时运行一套类型检查系统,因此强类型语言的速度一般比弱类型要慢,动态类型也比静态类型慢,因此在上述所说的四种语言中执行的速度应该是 C > Java > JavaScript...但是强类型,静态类型语言写起来往往是最安全的。 动态类型与静态类型的区别,如何利用好动态类型 静态类型由于在编译期会进行优化,所以一般来说性能是比较高的。...复杂对象不要在运算符上进行操作 语言类型静态化的方案 像 JavaScript 这种动态类型语言静态化后对运行时的安全性,效率肯定会有很大的提升的,目前有 TypeScript 这种预编译的方案;还有就是像

    2.3K40

    Python进阶09 动态类型

    动态类型(dynamic typing)是Python另一个重要的核心概念。我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值。...这些都与动态类型的概念相关。 动态类型 在我们接触的对象中,有一类特殊的对象,是用于存储数据的。常见的该类对象包括各种数字,字符串,表,词典。在C语言中,我们称这样一些数据结构为变量。...引用和对象分离,是动态类型的核心。引用可以随时指向一个新的对象: a = 3 a = 'at' 第一个语句中,3是储存在内存中的一个整数对象。通过赋值,引用a指向对象3。...从动态类型看函数的参数传递 函数的参数传递,本质上传递的是引用。...比如说: def f(x): x[0] = 100 print x a = [1,2,3] f(a) print a 动态类型是Python的核心机制之一。可以在应用中慢慢熟悉。

    61850

    使用CodeDom动态生成类型

    .NET 3.5的时候加入了匿名类型这个特性,我们可以直接使用 new {name="abc"} 来直接生成一个对象。这个特性现在应用的地方很多,比如dapper的查询参数都是用匿名对象。...编译器会自动生成一个叫做f__AnonymousType0`1的类型动态生成类型 但是有的时候我们可能类型里面的字段都是不确定的,这个时候我们就需要去动态生成一个类型了。...动态生成类型第一个想到的就是反射,但是仔细想想反射都是基于现有Type的基础上完成的,咱们现在连Type都没有,所以这条路不通。...第二个dynamic,dynamic确实是个好办法,可以动态指定字段的名称,但是有的三方的库不支持比如dapper。 最后CodeDom,CodeDom可以在运行时直接生成一个Type。...public Person(string name ,int age) { this.name = name; this.age = age; } } 构造类型

    1K30
    领券