黑马程序员技术交流社区

标题: 弱类型和强类型 [打印本页]

作者: 管章鹏    时间: 2013-4-1 20:36
标题: 弱类型和强类型
本帖最后由 管章鹏 于 2013-4-2 08:09 编辑

最近学习var弱类型,那么我想问一下什么是弱类型,什么又是强类型呢?
在系统设计中应该首先考虑使用哪种类型? 如果在不知道数据是什么类型的情况下用var会不会对效率构成影响呢?
求大神解答
作者: 张正强    时间: 2013-4-1 20:41
强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,强类型安全,因为它事先已经确定好了,而且效率高。如编译型编程语言c++,java,c#,pascal 等。
弱类型在执行的时候才会确定类型,弱类型更灵活,但是效率低,而且出错概率高.如解释型编程语言,如 javascript,vb 等。
作者: 曾玉锋    时间: 2013-4-1 21:00
本帖最后由 曾玉锋 于 2013-4-1 21:01 编辑

用通俗的话来讲,先编译,后执行的语言是强类型语言(C/C++、Pascal/Object   Pascal(Delphi)、VB、java、c#等);而解释型语言是弱类型语言,也就是边解释边执行,在执行的过程中来解释(如javascript、vbscript、sql脚本等脚本语言)。
var 是推断类型,在强类型语言中,定义一个var 类型的变量,必须给它赋予明确的值,否则编译不能通过。(不能这样:var i; i=0;)也不能作为参数类型和返回值类型。
在弱类型语言中,var 类型的变量,可以先声明,再在变量作用域内对其赋值,可以在任何时候改变var变量的类型和值。也就是说,在弱类型语言中,var变量的类型是不确定的,赋予它什么类型就是什么类型。var i;i=1;i="abc";  这样是正确的。

在使用var 作为变量的类型 应该不会太影响性能,因为对于强类型语言来说,在编译的时候已经把var类型编译成确定的类型。而弱类型语言,var 是可省略的,我想,应该没啥影响才是。  这是我的理解,希望对你有所帮助。
作者: 杜磊    时间: 2013-4-1 22:29
首先,在.net Framework中,var关键字不是“弱类型”的意思。他正确的意思是“隐式类型推断”。实际上,C#语言中,总是强类型的数据,没有弱类型这个概念。
var只是在脚本语言中才表示弱类型,会在编译的时候才真正确定其类型。
而在C#语言中,用var和其他强类型的关键字,在性能方面并不会有什么差异。甚至推荐用var,因为简单快捷方便。
作者: 管章鹏    时间: 2013-4-2 08:05
杜磊 发表于 2013-4-1 22:29
首先,在.net Framework中,var关键字不是“弱类型”的意思。他正确的意思是“隐式类型推断”。实际上,C# ...

学习了,谢谢啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2