强类型指的是程序中表达的任何对象所从属的类型都必须能在编译时刻确定。 常见的强类型语言有C++、Java、Apex和Python等。 强类型语言在大规模信息系统开发中具有巨大优势。
优势 (1) 编译时刻能检查出错误的类型匹配,以提高程序的安全性; (2) 可以根据对象类型优化相应运算,以提高目标代码的质量; (3) 减少运行时刻的开销。
基本信息 强类型是针对类型检查的严格程度而言的,它指任何变量在使用的时候必须要指定这个变量的类型,而且在程序的运行过程中这个变量只能存储这个类型的数据。因此,对于强类型语言,一个变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。 强类型是自定义类所具有的优势,它使得对象处理的数据更容易被理解。因此,强类型语言在大规模信息系统开发中具有巨大优势,特别是当设计者定义了由自定义类(相对于Java为我们提供好的类,自定义的类是我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用)所组成的数据访问层,并把设计向组织内的其他程序员发布的时候。它可以通过类型检查机制在编译过程中发现许多容易被人忽视的错误,从而保证软件的质量,使得大规模的软件集成为可能。
三种类型 语言有无类型,弱类型和强类型三种。 其中,无类型不检查,甚至不区分指令和数据; 弱类型的检查很弱,仅能严格的区分指令和数据; 强类型的则严格的在编译期进行检查。强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。 例如,弱类型语言允许变量类型的隐式转换,允许强制类型转换等,如字符串和数值可以自动转化;而强类型语言一般不允许这么做。
异同 (1) 不管是强类型还是弱类型,变量都有两个属性类型和值;即,弱类型的变量同样有类型。不管是哪一种编程语言,其中使用的变量,都既有类型,又有值。强类型的变量类型,必须在源代码中明确定义,称之为“变量声明”,弱类型的变量类型则是无需声明的,由解释器解释。但是,这并不意味着,弱类型的变量就没有类型这一概念了,举例来说,PHP的gettype就是返回该变量“当前”的类型。 (2) 强类型的变量类型是不能改变的,弱类型变量是随需改变的,这是强弱的真正含义。强类型的变量一经声明,就只能存储这种类型的值,其他的值则必须通过转换之后才能付给该变量,有编译器自动理解的转换,也有由程序员明确指定的强制转换。但是,弱类型的变量类型则是随着需要不断转换。 (3)强制转换并没有改变变量类型。强类型语言有个“强制转换”,这改变的是变量的值的类型,以便进行赋值,而没有改变变量的类型。变量的类型是不允许改变的。