弱类型语言、强类型语言?

一、什么是弱类型语言、强类型语言?

强类型和弱类型主要是站在变量类型处理的角度进行分类的。

强类型是指不允许隐式变量类型转换,弱类型则允许隐式类型转换。

所以,关键在于变量数据类型的转换。

二、什么叫隐式类型转换?

隐式是指源码中没有明显的类型转换代码,也就是说,一个变量,你可以直接给他赋值字符串,也可以直接给他赋值数值,你还可以直接让字符串类型的变量和数值类型的变量相加,虽然得出的最终结果未必是你想象的那样,但一定不会报错。

这就是隐式类型转换,弱类型语言,如javascript、php。

比如  (var result=5+5; //two numbers

    alert(result);  //outputs "10"

    var result=5+‘5‘; // a number and a string

    alert(result);  //outputs "55")

Java是强类型语言,不允许隐式类型转换,也就是说,如果你需要拿一个字符串变量当做整型来用,你必须显式地将变量类型转换好。

比如( int d = 10  double c = 12.3

    int a =a+(int)c  //这里a的值就是22)

换句话说:

  • 强类型语言,当你定义一个变量是某个类型,如果不经过代码显式转换(强制转化)过,它就永远都是这个类型,如果把它当做其他类型来用,就会报错
  • 弱类型语言,你想把这个变量当做什么类型来用,就当做什么类型来用,语言的解析器会自动(隐式)转换。

三、比较

弱类型显然让开发者更省力一些,一些数据类型不是很复杂的场景中基本可以不用关注数据类型的问题,这可以提高开发者的业务处理专注力,提升逻辑开发效率。

但同样,弱类型也因为它的特性,使开发者在开发过程中对变量类型的检测力度不够大,由此提高数据类型方面问题出现的可能性。

另外,弱类型语言的运行效率,内存利用率显然也比不上强类型语言。因为弱类型语言在运行过程中,存在变量类型的隐式转换,多了一些需要执行的操作,并且,分配内存时,会考虑通用而多分配一些,而强类型则专门为各种类型的变量量身定做地分配内存,内存利用率显然比弱类型会高。

原文地址:https://www.cnblogs.com/Dmand/p/12076197.html

时间: 2024-08-15 09:02:27

弱类型语言、强类型语言?的相关文章

动态语言 静态语言 强类型语言 弱类型语言

一 .静态语言的优势到底在哪? 引用 是像Java或者C#这样强类型的准静态语言在实现复杂的业务逻辑.开发大型商业系统.以及那些生命周期很长的应用中也有着非常强的优势 这是一个存在于大家心里常识了.我承认我自己在潜意识里面也觉得静态强类型语言适合开发复杂,大型系统.而弱类型脚本语言不适合开发太复杂,太大型的项目.但是在参与这个讨论过程中,我突然开始置疑这个观点,事实究竟是不是这样的呢? 先定义一下标准: 静态类型语言是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须

python语言的鸭子类型和强类型语言的多态

前面讲接口类的时候举过一个有关支付方式的例子,支付方式可以有几种,微信支付,支付宝支付,苹果支付等,这几个不同的支付都统一于支付,像这样几个类都统一于 某一个类或者某一个方法,或者说一个类有不同的形态的情况就属于多态:虽然几种支付方式都归一于支付类,执行的方法一样,但是每一个支付方式都有自己的特性,实现的 形态也不一样,即为多态性. class Payment: # 必要的父类 def pay(self,money): pass class Wechatpay(Payment): # 子类继承父

弱类型和强类型的简单理解

弱类型和强类型的简单理解 强类型.弱类型是指类型检查的严格程度的.无论哪种语言,对于变量而言,都存在"类型"和"值"两个概念.对于强类型语言,要求所有的变量必须先定义(定义时必须声明数据类型)后使用,并且指定类型的变量只能接受类型与之匹配的值. 如Java的变量定义和使用语句为: int a = 10; System.out.println(a); 这意味着每个变量和每个表达式都有一个在编译时就确定的类型,类型限制了变量能赋的值,限制了表达式能产生的值同时也限制了在

弱类型、强类型、动态类型、静态类型语言的区别是什么?

作者:amalgamation链接:https://www.zhihu.com/question/19918532/answer/21647195来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1. 先定义一些基础概念 Program Errors trapped errors.导致程序终止执行,如除0,Java中数组越界访问 untrapped errors. 出错后继续执行,但可能出现任意行为.如C里的缓冲区溢出.Jump到错误地址 Forbidden Beh

弱类型、强类型、动态类型、静态类型

装载: https://www.zhihu.com/question/19918532 弱类型: > "1"+2 '12' 强类型: >>> "1"+2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects

强类型和弱类型,静态类型和动态类型语言如何区分

强类型和弱类型 如果一门语言很少隐式转换类型,说明他是强类型语言.如果经常这么做,说明他是弱类型语言.java, c++和python是强类型语言.PHP,JavaScript和Perl是弱类型语言 静态类型和动态类型 在编译时检查类型的语言是静态类型语言,在运行时检查类型的语言是动态语言.静态类型需要声明类型.Fortran和Lisp是最早的两门语言.他们分别是静态类型语言和动态类型语言. 静态类型使得一些工具编译器和ide便于分析代码,找出错误和提供其他服务(优化,重构,等等).动态类型便于

关于强类型-弱类型

强类型:为所有变量指定数据类型称为“强类型”. 强/弱类型是指类型检查的严格程度的. 语言有无类型,弱类型和强类型三种. 1.无类型的不检查,甚至不区分指令和数据. 2.弱类型的检查很弱,仅能严格的区分指令和数据. 3.强类型的则严格的在编译期进行检查. 强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作. 复制去Google翻译翻译结果

静态、动态、强和弱类型

对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed. “动”或“静”,强调的是实施类型的时间,编译里就要确定类型的是静态类型,比如C/C++/JAVA/C#,运行时才实施类型的则是动态类型,比如VB/Python.          而“强”或“弱”刚强调实施类型的强度,强类型的语言,如C++等,变量的类型不可随意转换:而弱类型的语言,变量的类型可以随需要任意转换,而且通常都是隐式的.

简单理解弱类型、动态类型、解释型语言

弱类型和强类型 简单的说,二者的区别就是是否偏向于容忍隐式类型转换. $str = 'abc'; //str是一个字符串 $str = 1; //这时候又变成整形 if($str){}; //这时候又是一个布尔型 所以php是弱类型语言,变量类型会自动转换. 动态类型和静态类型 简单的说,二者的区别就是声明变量的时候是否需要指定变量类型. php是动态类型语言,声明变量时无需指定类型. 注意: 一个语言是不是强类型语言和是不是动态类型语言没有必然联系. 动态语言和静态语言 简单的说,二者的区别就

动态语言和静态语言、编译型语言和解释型语言、强类型语言和弱类型语言的分析

一.动态语言和静态语言1. 我们常说的动.静态语言,通常是指: 动态类型语言 Dynamically Typed Language 静态类型语言 Statically Typed Language 可能还有:动.静态编程语言 Dynamic\Statically Programming Language 2.    动态类型语言:在运行期间检查数据的类型的语言例如:Ruby\Python这类语言编程,不会给变量指定类型,而是在附值时得到数据类型.Python是动态语言,变量只是对象的引用,变量a