动态类型、静态类型和强类型、弱类型的区别
编程语⾔⼀般分为动态类型、静态类型和强类型、弱类型,例如Java是静态、强类型编程语⾔,⽽JavaScript是动态、弱类型编程语⾔。⼀、动态类型与静态类型
动态类型语⾔
是运⾏期间才做数据类型检查的语⾔,即动态类型语⾔编程时,永远不⽤给任何变量指定数据类型。该语⾔会在第⼀次赋值给变量时,在内部将数据类型记录下来。例如:JavaScript、Python、PHP。
优点:⽅便阅读,不需要写⾮常多的类型相关的代码;
缺点:不⽅便调试,命名不规范时会造成读不懂,不利于理解等。
静态类型语⾔
是编译期间做检查数据类型的语⾔,即写程序时要声明所有变量的数据类型,是固定的。使⽤数据之前,必须先声明数据类型(int
,float,double等)。相当于使⽤之前,⾸先要为它们分配好内存空间。
例如:C/C++是静态类型语⾔的典型代表,其他的静态类型语⾔还有C#、JAVA等。
优点:结构⾮常规范,便于调试,⽅便类型安全
缺点:为此需要写更多类型相关代码,较复杂。
⼆、强类型与弱类型
强类型
指的是程序中表达的任何对象所从属的类型都必须能在编译时刻确定。强类型是针对类型检查的严格程度⽽⾔的,它指任何变量在使⽤的时候必须要指定这个变量的类型,⽽且在程序的运⾏过程中这个变量只能存储这个类型的数据。因此,对于强类型语⾔,⼀个变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。例如:假设定义了⼀个double类型变量a,不经过强制类型转换那么程序int b = a 是⽆法通过编译。常⽤的强类型语⾔有Java、C# 、Apex和Python等。
强类型的优点:
厉害的编程代码1、编译时刻能检查出错误的类型匹配,以提⾼程序的安全性;
2、可以根据对象类型优化相应运算,以提⾼⽬标代码的质量;
3、减少运⾏时刻的开销。
弱类型
正好与强类型相反,编译时的检查很弱,它仅能区分指令和数据,弱类型语⾔允许变量类型的隐式转换,允许强制类型转换等,如字符串和数值可以⾃动转化。
⼆者区别:
1、不管是强类型还是弱类型,变量都有两个属性:类型和值;即弱类型的变量同样有类型。不管是哪⼀种编程语⾔,其中使⽤的变量,都既有类型,⼜有值。强类型的变量类型,必须在源代码中明确定义,称之为“变量声明”,弱类型的变量类型则是⽆需声明的,由解释器解释。但是,这并不意味着,弱类型的变量就没有类型这⼀概念了。
2、强类型的变量类型是不能改变的,弱类型变量是随需改变的,这是强弱的真正含义。 强类型的变量⼀经声明,就只能存储这种类型的值,其他的值则必须通过转换之后才能赋给该变量,有编译器⾃动理解的转换,也有由程序员明确指定的强制转换。但是,弱类型的变量类型则是随着需要不断转换。
3、强制转换并没有改变变量类型。强类型语⾔有个“强制转换”,这改变的是变量的值的类型,以便进
⾏赋值,⽽没有改变变量的类型。变量的类型是不允许改变的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论