黑马程序员技术交流社区
标题:
弱类型和强类型
[打印本页]
作者:
管章鹏
时间:
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