美文网首页
强类型、弱类型

强类型、弱类型

作者: 三月木头 | 来源:发表于2020-10-09 15:07 被阅读0次

什么是强类型,什么是弱类型?

之前一直写的OC语言,在自己的意识中,所有数据类型是定义好的,如果改变数据的类型必须进行强制类型转换。
但是接触了JavaScript后发现,一个变量,可以是字符串,也可以是int数据类型,一个字符串可以拼接int数据然后组成一个新的字符串。。。。
其实这就是两个明显的强类型、弱类型的语言。

强类型:

  1. 所有的变量必须先声明,后使用;
  2. 指定类型的变量只能接收类型与之匹配的值。

强类型的语言可以在编译过程中发现源代码的错误,从而保证程序更加健壮。

弱类型:
数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

编译型、解释型

编译型
我们先看看编译型,其实它和汇编语言是一样的:也是有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码。这个过程说得专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器(Compiler)。如果我们写的程序代码都包含在一个源文件中,那么通常编译之后就会直接生成一个可执行文件,我们就可以直接运行了。但对于一个比较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模块来组织。这时编译各个文件时就会生成目标文件(Object file)而不是前面说的可执行文件。一般一个源文件的编译都会对应一个目标文件。这些目标文件里的内容基本上已经是可执行代码了,但由于只是整个项目的一部分,所以我们还不能直接运行。待所有的源文件的编译都大功告成,我们就可以最后把这些半成品的目标文件“打包”成一个可执行文件了,这个工作由另一个程序负责完成,由于此过程好像是把包含可执行代码的目标文件连接装配起来,所以又称为链接(Link),而负责链接的程序就叫……就叫链接程序(Linker)。链接程序除了链接目标文件外,可能还有各种资源,像图标文件啊、声音文件啊什么的,还要负责去除目标文件之间的冗余重复代码,等等,所以……也是挺累的。链接完成之后,一般就可以得到我们想要的可执行文件了。

解释型
解释型:在程序运行的前一刻,还只有源程序而没有可执行程序;而程序每执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行,总言之,就是不断地解释、执行、解释、执行……所以,解释型程序是离不开解释程序的

编译型:一次把所有的代码转换成机器语言,然后写成可执行文件;

既然说到了解释型语言,那么我们就来分别以下解释型语言和编译型语言的差别:
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件(即exe文件),运行时不需要重新编译,直接用编译后的文件(exe文件)就行了。
优点:执行效率高
缺点:跨平台性差
解释型语言:程序不需要编译,程序在运行的过程中才用解释器编译成机器语言,边编译边执行(没有exe文件)。
优点:跨平台性好
缺点:执行效率低
其中程序无需编译,不是说真的不需要编译了,直接执行脚本字符串。而是说不需要在运行之前先编译程序成为exe文件,而是在运行的过程中边运行边执行。

动态语言和静态语言

动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。OC、Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

参考链接:http://m.elecfans.com/article/593521.html

相关文章

  • 强类型 & 弱类型 静态类型 & 动态类型

    强类型 & 弱类型 (针对类型转换是否)静态类型 & 动态类型 (针对类型检查时机) 强类型 & 弱类型 强类型:...

  • 类型安全 & 类型检查

    类型安全 强类型 弱类型 类型检查 静态类型 动态类型 强类型 VS 弱类型 强类型不允许随意的隐式类型转换,而弱...

  • TypeScript

    强类型与弱类型 类型安全纬度:强类型与弱类型强类型:语言层面限制函数的形参类型和实参类型必须相同。弱类型:语言层面...

  • TypeScript疑难解析

    1. 语言类型 1.1 强类型与弱类型 强类型不允许随意的隐式类型转换,而弱类型是允许的强类型和弱类型区别是是否允...

  • 强类型弱类型

    静态类型:编译时就确定类型,java/C/C++/golang 动态类型:运行时确定 python/PHP 强类型...

  • 强类型弱类型

    静态类型:编译时就确定类型,java/C/C++/golang动态类型:运行时确定 python/PHP 强类型:...

  • 强类型、弱类型

    什么是强类型,什么是弱类型? 之前一直写的OC语言,在自己的意识中,所有数据类型是定义好的,如果改变数据的类型必须...

  • 一些问题

    1.以下情况的打印结果 2.OC是强类型还是弱类型语言? 强类型:为所有变量指定数据类型称为“强类型”。强/弱类型...

  • 程序员撕逼术语

    弱类型vs强类型 动态类型vs静态类型

  • 弱类型语言、ASCII与Unicode、非相等运算符

    弱类型语言和强类型语言 强类型和弱类型主要是根据变量类型处理的角度来分类的; 强类型不允许隐式变量类型转换,如Ja...

网友评论

      本文标题:强类型、弱类型

      本文链接:https://www.haomeiwen.com/subject/doylpktx.html