冒号课堂§5.2:数据类型 - 编程入门网
[6] 但许多强类型语言对于宽转换(widening conversion)还是允许隐性的,如必要时int可自动转换为float。 [7] 典型的类型错误是:一个函数本来期待的参数类型是A,实际传入的变量a却不是A类型。 [8] 比如,静态类型的OOP语言如C++、Java支持downcasting,能在运行期间进一步细化数据类型,从某种意义上也具有动态类型的特征。 。总结 尽管动态语言大多数是动态类型语言,但二者并不是一回事。 数据类型包含两个要素:允许取值的集合和允许参与的运算。 数据类型既有针对机器的物理意义,又有针对人的逻辑意义,提高了代码的安全性和抽象性。 动态类型的类型检查发生在运行期间,静态类型的类型检查发生在编译期间(运行之前)。 动态类型的变量不需要显式声明,静态类型的变量需要通过显式声明或类型推断。 鸭子类型是动态类型的一种风格,允许非继承性多态,即一个对象的类型可以由其接口集合来确定,不需要通过显式继承。它有利于代码重用,但也可能造成误用和滥用。 动态类型语言的优点:代码简明灵活、易于重用,适合泛型编程和快速原型开发。 静态类型语言的优点:运行之前的类型检查增强了代码的可靠性,使编译器有可能进行优化处理从而提高运行效率,节省了运行期的类型检查所占用的时间和空间,同时类型声明有辅助文档的功效。 静态类型检查实行“疑罪从有”的有罪推定制,动态类型检查实行“疑罪从无”的无罪推定制。取舍的原则是:Static Typing Where Possible, Dynamic Typing When Needed。即尽可能守规则,必要时求变通。 类型的动静以类型的绑定时间来划分,类型的强弱以类型的约束强度来划分,它们之间没有必然联系。弱类型语言允许类型的隐性转化,被认为是类型不安全的;而强类型语言则一般不允许这种转化,被认为是类型安全的。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |