强类型是针对类型检查的严格程度而言的,它指任何变量在使用的时候必须要指定这个变量的类型,而且在程序的运行过程中这个变量只能存储这个类型的数据。因此,对于强类型语言,一个变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。例如:假设定义了一个double类型变量a,不经过强制类型转换那么程序int b = a是无法通过编译。常用的强类型语言有Java、C# 、Apex和Python等。
强类型是自定义类所具有的优势,它使得对象处理的数据更容易被理解。因此,强类型语言在大规模信息系统开发中具有巨大优势,特别是当设计者定义了由自定义类所组成的
数据访问层,并把设计向组织内的其他程序员发布的时候。它可以通过类型检查机制在编译过程中发现许多容易被人忽视的错误,从而保证软件的质量,使得大规模的软件集成为可能。
语言有无类型,弱类型和强类型三种。其中,无类型不检查,甚至不区分指令和数据;弱类型的检查很弱,仅能严格的区分指令和数据;强类型的则严格的在编译期进行检查。强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。例如,弱类型语言允许变量类型的隐式转换,允许
强制类型转换等,如字符串和数值可以自动转化;而强类型语言一般不允许这么做。下面举例说明。
有上述例子可以说明:弱类型的语言的东西没有明显的类型,它能随着环境的不同自动变换类型;而强类型则没这样的规定,不同类型间的操作有严格定义,只有相同类型的变量才能操作。
(1) 不管是强类型还是弱类型,变量都有两个属性:类型和值;即,弱类型的变量同样有类型。 不管是哪一种编程语言,其中使用的变量,都既有类型,又有值。强类型的变量类型,必须在源代码中明确定义,称之为“变量声明”,弱类型的变量类型则是无需声明的,由解释器解释。但是,这并不意味着,弱类型的变量就没有类型这一概念了,举例来说,PHP的gettype就是返回该变量“当前”的类型。
(2) 强类型的变量类型是不能改变的,弱类型变量是随需改变的,这是强弱的真正含义。 强类型的变量一经声明,就只能存储这种类型的值,其他的值则必须通过转换之后才能付给该变量,有编译器自动理解的转换,也有由程序员明确指定的强制转换。但是,弱类型的变量类型则是随着需要不断转换。