静态类型和动态类型的区别

2023-11-14

一、静态类型和动态类型的区别

引自MDN Web Docs 动态类型

the interpreter assigns variables a type at runtime based on the variable's value at the time.

大概含义:(动态类型)在运行时,解释器基于变量值的类型决定变量的类型。这段文字原本是介绍JavaScript动态类型的,不过对于Python等动态类型语言同样适用。

因此,在编写动态类型语言的源码时,不用声明变量的数据类型。
甚至,在Python 中,变量不需要声明。每个变量在使用前必须赋值,变量赋值后该变量就会被创建。另外,JavaScript不用var声明,直接也可以正常使用。

// JavaScript
var a = 1;
var b = 2.0;
c = "hello" // 也可以正常运行// Python
a = 1;
b = 2.0;

静态类型,在编译时,编译器基于所声明的数据类型确定变量的类型

因此,在编写静态类型语言的源码时,必须声明变量的数据类型。(Java、C、C++声明变量使用的关键字相同。)

// Java/C/C++
int a = 1;
double b = 2.0;

总结:静态类型和动态类型的本质区别在于:变量的数据类型确定的时机不同,前者在运行时根据变量值确定;后者在编译时根据声明类型确定。

二、静态类型语言和动态类型语言的区别

上文已经提及了静态类型语言和动态类型语言,其实,静态/动态类型和静态/动态类型语言还是有区别的。

引自MDN Web Docs 动态类型语言

动态编程语言是指可在运行阶段时执行那些在编译阶段执行的操作的编程语言。比如,在 JavaScript 中, 我们可以在程序运行时改变变量的类型,或者为一个对象增加一个新属性或者方法。

这正好与静态编程语言相反,在静态编程语言的运行阶段,一般是无法执行这些改变的。

上文已经提及常见的动态类型语言:JavaScript、Python等
静态类型语言:Java、C 、C++等

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态类型和动态类型的区别 的相关文章

  • vscode利用ssh远程连接linux虚拟机

    1 vscode是利用ssh远程连接linux的 所以首先确保vscode已经安装了这两个插件 2 点击左下角的连接 3 选择Connect to Host 4 选择添加新的主机 5 按格式输入 ssh 主机名 ip 比如我的 ssh du
  • python二级题库(百分之九十原题) 刷题软件推荐

    目录 刷题软件 模拟python二级考试 选择题 二 基本操作 三 简单应用 四 综合应用 刷题软件 文末有联系方式 注明来意 选择题 1 下列叙述中正确的是 A 解决一个问题可以有不同的算法 且它们的时间复杂度可以是不同的 B 算法的时间
  • 日期时间datetime与时间戳timestamp互相转换

    字符串日期时间转换成时间戳 2015 08 28 16 43 37 283 gt 1440751417 def string2timestamp strValue d datetime datetime strptime strValue
  • C语言中长度为0的数组

    前面在看Xen的源码时 遇到了一段代码 如下所示 注意上面最后一行的代码 这里定义了一个长度为的数组 这种用法可以吗 为什么可以使用长度为0 的数组 长度为的数组到底怎么使用 这篇文章主要针对该问题进行简单的讲解 废话不多说了 现在就开始
  • 32位和64位系统区别及int字节数

    一 64位系统和32位有什么区别 http zhidao baidu com question 100772591 html 1 64bit CPU拥有更大的寻址能力 最大支持到16GB内存 而32bit只支持4G内存 2 64位CPU一次
  • windows hosts文件恢复

    解决方法 重新创建hosts文件 在路径C Windows System32 drivers etc中查找 注意 记住hosts文件没有后缀 之前我一直存储为文本导致无法正常使用
  • Mybatis最全笔记--今日分享(参考狂神说)

    一 CRUD Mybatis 1 namespace namespace中的包名要和Dao Mapper接口的包名一致 2 select 选择 查询语句 id 就是对应的namespace中的方法名 resultType sql语句执行的返
  • 四叉树的C++实现

    四叉树的数据结构 抽象数据类型定义如下 ADT QuadTrees 数据对象D D是具有相同性质的具有二维结构的数据元素的集合 本实验为坐标数据 数据关系R 若D为空集 则称为空树 若D仅含有一个数据元素 则R为空集 否则R H H是如下二
  • 4、一维数组、遍历数组、冒泡排序、插入排序、选择排序

    一维数组 定义形式1 数据类型 数组变量名 new 数据类型 数组长度 例1 int array new int 10 例2 char array new char 8 定义形式2 数据类型 数组变量名 值1 值2 值3 值n 例1 int
  • 各版本Pytorch安装详解

    Pytorch安装教程 windows版本 conda安装 1 cuda9 0 python3 6 3 5 3 7 conda install pytorch c pytorch pip3 install torchvision 2 cud
  • [python] Python枚举模块enum总结

    枚举是一种数据类型 在编程中用于表示一组相关的常量 枚举中的每个常量都有一个名称和一个对应的值 可以用于增强代码的可读性和可维护性 在Python中 枚举是由enum模块提供的 而不是Python提供专用的枚举语法 关于enum模块介绍见
  • cmake 返回当前路径的上层路径 string(REGEX REPLACE...)

    返回当前路径的上层路径 先上实现代码 string REGEX REPLACE learn basic 1 PROJECT INIT PATH PROJECT SOURCE DIR 说明 CMakeLists txt 所在路径 可由cmak
  • 运行时错误:Error: free(): invalid next size (fast)

    经查 这通常发生在C C 混合编程时候调用的内存分配 释放接口不配对时 即malloc分配的内存 却用了delete或者new出来的对象 却用了free 只要确保 malloc free new delete配对 该问题就消失了
  • 为什么32位的计算机内存最多4G

    1 计算机的最小存储单元 bit 位 一个bit用于存放一个二进制数 内存的单位 Byte 一个Byte 8bit 2 计算机会给每一个单位的内存 1Byte 分配一个地址 CPU是通过内存地址来调用内存中的数据的 调用方式是直接寻址 直接
  • 静态类型和动态类型的区别

    一 静态类型和动态类型的区别 引自MDN Web Docs 动态类型 the interpreter assigns variables a type at runtime based on the variable s value at
  • 两数之和问题(C语言解法)

    给定一个整数数组和一个目标值 找出数组中和为目标值的两个数 你可以假设每个输入只对应一种答案 且同样的元素不能被重复利用 算例 给定 nums 2 7 11 15 target 9 因为 nums 0 nums 1 2 7 9 所以返回 0
  • Mac M1下安装、升级npm(国内源)

    我们介绍使用Homebrew安装node npm等环境 brew的安装见如下文章 Mac M1芯片电脑Java开发环境准备 重要的事情说三遍 国内源 国内源 国内源 要不然慢的要死 要卡死 npm我们也要使用国内源 安装很简单还是之前的套路
  • sql developer默认是不自动提交事务的,如何查询未被提交的事务

    select SQL TEXT status from v sql v transaction where LAST ACTIVE TIME START DATE 上面的语句可以查询未被提交的事务 如果你查询或更新时很长时间没反应 一般是另
  • 【编程基础】如何自学计算机/编程

    愚者困惑 智者提问 一 编程语言 二 编程技术体系 2 1 编程基础 2 1 1 操作系统 2 1 2 数据结构 2 1 3 编译原理 2 1 4 计算机组成原理 2 1 5 算法 2 2 编程语言 2 3 编程素质 2 3 1 编程规范
  • 大话数据结构读书笔记 1---线性表

    大话数据结构读书笔记 编程基础 数据结构 算法 1 线性表 顺序储存结构的结构代码 define MAXSIZE 20 储存空间的起始分配量 typedef int ElemType ElemType类型根据实际类型而定 这里假设是int

随机推荐

  • MongoDB和MySQL性能测试及其结果分析

    MongoDB和MySQL性能测试及其结果分析 2011 02 23 11 18 洪小军 博客园 字号 T T 编者用四组数据的查询和插入操作说明MongoDB HandlerSocket和MySQL在QPS CPU IO三种情况下性能的差
  • Error updating database. Cause:java.sql.SQLException: Lock wait timeout exceeded; try 清除数据库执行时间较长的任务

    SELECT FROM information schema PROCESSLIST WHERE TIME gt 1000 AND USER dimsusr ORDER BY TIME DESC kill id Error updating
  • 测试工程师如何进行需求评审

    需求文档是测试过程的重要输入之一 测试工程师根据需求文档进行测试活动 包括测试方案的制定 测试设备的准备 测试环境的搭建以及测试用例的设计 需求文档的质量直接影响到测试工作效率 在一个成熟的软件开发过程中 测试工程师需要尽早地进入项目对需求
  • 投资人和创业者如何相处 听听几位大佬观点

    在8月14日的以太Bit大会上 源码资本创始人曹毅 清流资本董事总经理王梦秋 华创资本合伙人吴海燕 明势资本创始人黄明明 零一创投合伙人吴运龙坐在了一起 讨论起投资人的生存法则 以及和创业者的合作关系 投资人能为创业者做什么 曹毅 我觉得我
  • sklearn中的特征工程(过滤法、嵌入法和包装法)

    特征工程的第一步 理解业务 如果特征比较少且容易理解 我们可以自行判断特征的取舍 如前面的泰坦尼克号数据集 但是 在真正的数据应用领域 比如金融 医疗 电商 我们的数据不可能像泰坦尼克号数据的特征这样少 这样明显 那如果遇见极端情况 我们无
  • 我的2022年度总结

    随着Apple Store越来越成熟 以及越来越多的开发者和公司希望在该平台上投放自己的产品 iOS APP上架成为许多开发者和公司普遍关注的话题 最近发现有款开发工具非常好用 特意去找了一个工具的成长历程 最早的版本 发现此款工具从202
  • 西门子S7报文解析

    1 报文的基本格式 1 1 第1和第2个字节是 固定报文头03 00 这里我们就用到三种报文 a 初始化 b 读 c 写 都是这种格式 1 2 第3和第4个字节是 整个报文的长度 其它部分就是各种报文的个性化处理了 下面分析大量报文的案例进
  • Open3D 最小二乘拟合二维圆

    目录 一 算法原理 二 代码实现 三 结果展示 一 算法原理 见 Open3D 最小二乘拟合二维圆 python详细过程版 二 代码实现 import open3d as o3d import numpy as np import matp
  • FBX SDK下载安装教程

    目录 FBX SDK介绍 FBX SDK下载安装 FBX SDK介绍 Fbx 是 Autodesk MotionBuilder 固有的文件格式 用于创建 编辑和混合运动捕捉和关键帧动画 也常用于动画文件在不同的DCC 三维软件 之间的互导
  • SpringBoot 场景开发多面手成长手册

    小册介绍 SpringBoot之强大 SpringBoot 的强大之处不言而喻 其底层 SpringFramework 强大的 IOC 容器和 AOP 机制 加之 SpringBoot 的自动装配 使得 SpringBoot 成为当今 Ja
  • 聊聊你不知道的Java变量转型

    单枪匹马你别怕 一腔孤勇又如何 这一路你可以哭 但不能怂 请关注 源码猎人 目录 简介 标识符命名规则 类变量 静态变量 实例变量 局部变量 变量数据类型 基本类型之间的转换 常见面试题 简介 Java变量分为类变量 实例变量 局部变量 在
  • 自动化测试工具大盘点

    本系列文章我们将带大家一起了解一下互联网大厂中通科技的自动化测试平台的搭建历程 从以下四个方面展开介绍 为什么要做这样一个统一的自动化测试平台 是如何做到统一的 平台上线后的收益 最后一部分会给大家分享一下他们未来的一些开发计划 在本系列文
  • 通过一份经典的UML类图来学会如何读懂UML类图

    一份经典的UML类图如下 继承关系 实线 空心三角形 鸟 动物 鸟继承动物 实现接口 虚线 空心三角形 大雁 飞翔 大雁实现了飞翔接口 实现接口 棒棒糖表示法 唐老鸭 讲人话 唐老鸭实现讲人话接口 关联关系 gt 实线剪头 企鹅 gt 气候
  • there.js3d模型动画交互

    there js3d模型动画交互 https blog csdn net qq 38316721 article details 81281749
  • Python+OpenCV开发环境搭建

    Python OpenCV开发环境搭建 本文主要介绍了Win7 64位系统下Python OpenCV开发环境的搭建 1 安装Python 2 7 13 从官网上或这里http download csdn net detail sysuzh
  • drools 7.x KIE API解析

    https blog csdn net wo541075754 article details 75004575 http dyingbleed com drools 2
  • git生成SSH密钥提示ssh文件不存在-已解决

    参考文章 https blog csdn net qq 41530816 article details 100179808 utm medium distribute pc relevant none task blog 2 7Edefa
  • 【腾讯云 Cloud studio 实战训练营】真正做到让你的开发成本只在编码

    文章目录 写在前面 CODING Cloud studio工具 在线编码 运行项目 代码上传 Cloud Studio 开发贪吃蛇 写在最后 写在前面 期待已久的体验活动终于来了 Clound Studio用了才知道有多爽 Cloud St
  • 给即将学习大数据的几点建议

    以下内容摘自一位学习大数据技术的朋友的感想和总结 文采飞扬 字字肺腑 产生共鸣 经本人同意 发布至此 希望给很多站在大数据门口驻足 犹疑 徘徊的小伙伴一些建议 大数据行业发展不等人 要想改变现状 现在出发 即可动手 大数据学习现在开始 为时
  • 静态类型和动态类型的区别

    一 静态类型和动态类型的区别 引自MDN Web Docs 动态类型 the interpreter assigns variables a type at runtime based on the variable s value at