收藏
0有用+1
0

强类型

语言类型
强类型指的是程序中表达的任何对象所从属的类型都必须能在编译时刻确定。常见的强类型语言有JavaApexPython等。强类型语言在大规模信息系统开发中具有巨大优势。
中文名
强类型
外文名
Strong type
性    质
语言类型
其他语言类型
弱类型、无类型
强类型语言
Java/Apex/Python等
应    用
适用于大规模信息系统开发

基本信息

播报
编辑
强类型是针对类型检查的严格程度而言的,它指任何变量在使用的时候必须要指柜篮协定这个变量的类型,而且在程序的运行愉嘱劝过程中这个变量只能存储这个类型的数据。因此,对于强类型语言,一个变量不经过强制转辣局辨换,它永拳慨厚远是这个数据类型,不允许隐式的类型转换。例如:假设定义了一个double类型变量a,不经过强制类型转换那么程序int b = a是无法通过编译。常用的强类型语言有Jav翻嫌a、C# 、Apex和Python等。
强类型是自定义类所具有的优势,它使得对象处理的数据更容易被理解。因此,强类型语言在促纹大规模信息系统开发中具有巨大优势,特别是当设计者定义了由自定义类所组成的数据访问层,并把设章旬套计向组织内的其他程序员发布的时候。它可以通过类型检查机制在编译过程中发现许多容易被人忽视的错误,从而保证软件的质量,使得大规模的软件集成为可能寒组料棵。 [1]

三种类型

播报
编辑
语言有无类型,弱类型和强类型三种。其中,无类型不检查,甚至不区分指令和数据;弱类型的检查很弱,仅能严格的区分指令和数据;强类型的则严格的在编译期进行检查。强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。例如,弱类型语言允许变量类型的隐式转换,允许强制类型转换等,如字符串和数值可以自动转化;而强类型语言一般不允许这么做。下面举例说明。
(1)弱类型语言vbs:
a=1
b=a+"1"+"a" //结果是11a,这里 a 成了字符串
c=a+1 //结果是2 ,这里a则是数字型
(2)强类型语言C#:
int a=2
string b=a.ToString()+"1"+"a"
int c=a+1
有上述例子可以说明:弱类型的语言的东西没有明显的类型,它能随着环境的不同自动变换类型;而强类型则没这样的规定,不同类型间的操作有严格定义,只有相同类型的变量才能操作。

异同点

播报
编辑
(1) 不管是强类型还是弱类型,变量都有两个属性:类型和值;即,弱类型的变量同样有类型。 不管是哪一种编程语言,其中使用的变量,都既有类型,又有值。强类型的变量类型,必须在源代码中明确定义,称之为“变量声明”,弱类型的变量类型则是无需声明的,由解释器解释。但是,这并不意味着,弱类型的变量就没有类型这一概念了,举例来说,PHP的gettype就是返回该变量“当前”的类型。
(2) 强类型的变量类型是不能改变的,弱类型变量是随需改变的,这是强弱的真正含义。 强类型的变量一经声明,就只能存储这种类型的值,其他的值则必须通过转换之后才能付给该变量,有编译器自动理解的转换,也有由程序员明确指定的强制转换。但是,弱类型的变量类型则是随着需要不断转换。
(3)强制转换并没有改变变量类型。强类型语言有个“强制转换”,这改变的是变量的值的类型,以便进行赋值,而没有改变变量的类型。变量的类型是不允许改变的。

强类型的优点

播报
编辑
(1) 编译时刻能检查出错误的类型匹配,以提高程序的安全性;
(2) 可以根据对象类型优化相应运算,以提高目标代码的质量;
(3) 减少运行时刻的开销。 [2]