当前位置: 首页 > news >正文

2.7 编译型和解释型

2.7 编译型和解释型

前面我们使用java和javac命令把Hello,World!在控制台输出。那为什么输出,这里我们需要掌握两个知识点。编译型语言和解释型语言。在计算机的高级编程语言就分为编译型语言和解释型语言。而我们的Java既有编译型的特点也有解释型的特点。从字面意思来看,编译和解释都有翻译的意思,他们的区别就在于时机不同,比如一个中国人和一个美国人,两个人之间的文字是不一样的,如果他们想要看同一本书,比如三国演义,如果美国人想看我们可以采用两种方法

  1. 把整本三国演义全部翻译成英语,这样美国人就可以看了。
  2. 美国人找了一个翻译官,美国人要看一段,翻译官就给他翻译一段,他就可以一直跟着翻译官的进度走。但是如果翻译官那天没有工作,或者美国人想要回过头去翻看之前的章节,此时翻译官就需要往回走重新翻译一遍。

这两种方法都可以使美国人读我们的三国演义,当然这两种方法各有好处,第一种方法是把整本书从中文变成了英文,这个外国人就可以看完了,但是如果作者把书更新了,或者内容换了一下,此时外国人想要看,就需要再把一本书重新翻译一遍,此时外国人就需要花同样的价钱再去购买,如此一来代价是较大的,而第二种方法有一个翻译官实时翻译,此时书本如果改了,翻译官就可以立即翻译过来,就可以节省一些成本,所以说这两种方式各有好处。

我们继续回到编译型和解释型这边

编译型就类似于把一本中文书直接翻译成英文版进行出售,在程序里给我们的感觉就是他有一个负责翻译的程序,将我们自己写的源代码转换成一个计算机可以执行的代码,这个过程说的专业一点就叫做编译型即complie,这本书从中文到英文需要翻译或者编译,无论是人还是翻译官又或者程序,总归需要他们去翻译或者编译这段代码,在程序中负责编译的程序,我们称之为编译器

解释型,意思就是我说一句你解释一句,我写一段代码你解释一句,这样以来,程序的性能可能有一点损失,因为用一点编译一下,如果我要回头看一个东西你又要给我从新翻译

编译型和解释型这两种语言各有利弊,编译型直接将整本书进行了翻译,外国人就可以直接看了,如此以来执行速度就会更快,因为他把所有东西都已经翻译好了,电脑只用去执行即可,对计算机的操作系统要求比较低,比如我们开发的操作系统Windows、Linux、macOS都是用的编译型语言进行编写的,比如C语言、C++都是编译型的语言,如果我们想要运行他们编写的程序都需要对代码进行编译。而解释型就像我们平时看到的网页以及服务器的一些脚本,对速度要求不高,对速度要求不高我们就可以用这种解释型的语言,也就是边执行边解释,比如我们现在正在学习的Java,当然Java是两者的结合,除了Java还有一个脚本语言JavaScript,VBscript,Python等这些都是解释型语言,Java语言虽然比较接近解释型语言的特征,但是我们运行我们的.java文件生成了一个.class文件,这中间就是经历了一个编译的过程,它把javac的源文件通过Java的编译器变成了一个字节码文件,而真正被执行的文件是class字节码文件。所以说我们可以理解成java文件在执行之前经过了一次预编译,生成的代码就介于机器码和java源代码之间的字节码文件。如图程序控制
当字节码文件运行时就会走到JVM虚拟机,他会将.class字节码文件放到我们虚拟机的类装载器里面,如此以来,这个类就被加载到我们的JVM里了,加载进之后会到字节码校验器,它主要负责查看你的代码写的对不对,如果代码写错了就会告诉你你的代码出问题了,如果字节码校验器校验没有问题就通过解释器把代码解释给操作系统,走一步运行一步,走一步解释一步,如此以来程序就运行起来了。

随着技术以及硬件的发展,编译型和解释型的概念变得越来越模糊了,就像现在的电脑起步就是16G的内存,所以现在解释型的效率也是非常高了,因为我们的硬件已经提升,但这里我们需要知道的是,Java是先编译到操作系统在进行解释,因此这里我们要知道Java具有编译型和解释型的特征。

刚才我们已经说了程序的运行机制,我们的Java程序的源文件是通过一条javac命令把我们的Java文件编译成我们的class文件,在通过解释器告诉操作系统我们这段代码写了是干什么的,操作系统就按照我们的指令进行操作,这就是程序将一系列的指令按照有规律的操作进行执行,这里只是笼统的解释,这里我们要理解其中的原理,最起码我们要知道程序运行的流程。

相关文章:

2.7 编译型和解释型

2.7 编译型和解释型 前面我们使用java和javac命令把Hello,World!在控制台输出。那为什么输出,这里我们需要掌握两个知识点。编译型语言和解释型语言。在计算机的高级编程语言就分为编译型语言和解释型语言。而我们的Java既有编译型的特点也有…...

校园网自动登陆(河南科技学院)

1. 介绍 河南科技学院校园网自动登陆(新乡的很多系统相似,可能也可以用?),java版。可以实现电脑,路由器,软路由的自动认证wifi,后续会上传docker版本的。 源码地址 github:https://…...

C++11 override和final关键字

C11中的override和final关键字是为了增强代码的编译时类型检查和面向对象设计中的继承机制。 override关键字用于显示地表明派生类中的成员函数覆盖了基类中的虚函数。当派生类中的函数与基类中的虚函数签名不同或者没有使用override关键字时,编译器会给出警告或错…...

kafka的log存储解析

kafka的log存储解析——topic的分区partition分段segment以及索引等 引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定 的),每个…...

4.文件系统

组成 Linux:一切皆文件 索引节点(I-node) I-node(Index Node):文件系统的内部数据结构,用于管理文件的元数据和数据块。 文件的元数据:包括文件的权限、拥有者、大小、时间戳、索引…...

Shell脚本case in esac分支语句应用

记录:434 场景:Shell脚本case in esac分支语句应用。 版本:CentOS Linux release 7.9.2009。 1.case in esac格式 格式: case 值 in 模式1)expression;; 模式2)expression;; 模式n)expression;; esac 解析:case…...

【线性dp必学四道题】线性dp四道经典例题【最长上升子序列】、【最长公共子序列】、【最长公共上升子序列(maxv的由来)】【最长公共子串】

【最长上升子序列】、【最长公共子序列】、【最长公共上升子序列】 最长上升子序列f[i] 表示以i结尾的最长子序列 最长公共子序列f[i][j] 表示 a前i 和 b前j个 最长公共长度 最长公共上升子序列f[i][j]代表所有a[1 ~ i]和b[1 ~ j]中以b[j]结尾的公共上升子序列的集合 最长公共子…...

追寻幸福:探索幸福的关键特征和行为

目录 1. 积极的心态 2. 良好的人际关系 3. 自我接纳和自尊 4. 追求意义和目标 5. 健康的身心状态 6. 感知和实现个人价值 幸福是一个主观的感受,因此不同的人对于幸福的定义和追求方式可能会有所不同。然而,有一些共同的特点和行为模式&#xff0c…...

Redis-02-集群

一、redis5搭建集群 1.1、案例:搭建6台redis主机,配置如下 redis并发量:https://www.gxlcms.com/redis-350423.html主机IP:192.168.168.60~65修改redis配置文件hash槽移动,槽内的数据也随之移动 [root60 ~]# vim /e…...

【2023 · CANN训练营第一季】MindSpore模型快速调优攻略 第三章——MindSpore云上调试调优

1.ModelArts云上调试调优 ModelArts密钥初始化 详细教程: 初始化OBS服务 创建训练作业 2.MindSpore IDE插件效率提升 通过智能代码块推荐、代码自动补全等特性,提升MindSpore脚本开发效率,对接ModelArts云服务,实现模型训…...

python笔记17_实例演练_二手车折旧分析p2

…… 书接上文 4.车辆等级维度 探查车龄为5年的车辆,折旧价值与车辆等级的关系。 # 筛选出车龄为5的数据创建新表 data_age5 data[data[age] 5] data_age5 # 分组聚合计算均值 data_car_level data_age5.groupby(car_level_name)[lowest_price].mean().reset…...

android 12.0长按Power弹出关机对话框去掉屏幕截图和紧急呼救功能

1.概述 在12.0的系统长按关机键,会弹出关机的对话框,关机对话框里面由关机重启截图和紧急呼叫等功能,而由于开发功能需求要求去掉屏幕截图和紧急呼叫等功能,所以就要先找到关机对框的代码 然后实现功能 功能分析: 长按电源键弹出关机对话框,通过adb shell命令发现 就是f…...

2023年下半年软考高级需要报班吗?

首先,对于软考高级考试报班与否的问题,需要根据自身的情况来做出决定。如果你有较强的自学能力,且具备丰富的实际工作经验和技术知识,那么不报班也完全可以自学备考。但如果你对软件工程的知识掌握程度较低,或者时间紧…...

使用WordPress提高企业敏捷性

喜欢WordPress的原因有很多:该平台非常适合内容管理以及控制预算。此外, 在 提高开发效率和简化项目管理方面,WordPress可以通过多种方式提供帮助。 对于任何企业业务,目标始终是在不影响质量的情况下更快地启动项目、发布修复和…...

SSM编程---Day 07

目录 SpringMVC 一、概念 二、springMVC的请求处理流程 三、mvc:annotation-driven 标签的作用 四、HandlerMapping、Handler和HandlerAdapter的介绍 五、SpringMVC 体系结构 六、SpringMVC的常用注解 七、view和controller之间的传值 SpringMVC 一、概念 1、 Spring…...

Seata术语

1.什么是Seata Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网 2.Seata能干嘛 一个典型的分布式事务过程 分布式事务处理过程的一ID三组件模型: Transaction ID XID 全局唯一的事务ID三组…...

【Axure教程】通过文本框维护下拉列表选项

下拉列表(Dropdown List)是一种常见的用户界面元素,用于提供一组选项供用户选择。它通常以一个展开的列表形式出现,用户可以点击或选择列表中的一个选项。一般来说,他的选项值是由系统代码组成的,所以一般是…...

【C++】基础知识--输入/输出(5)

前面部分的示例程序几乎没有提供与用户的交互(如果有的话)。他们只是在屏幕上打印简单的值,但标准库提供了许多其他方式通过其输入/输出功能与用户交互。本节将简要介绍一些最有用的方法。 cin标准输入cout标准输出cerr标准错误(输…...

经典文献阅读之--PIBT(基于可见树的实时规划方案)

0. 简介 作为路径规划而言,不单单有单个机器人自主路径规划,近年来随着机器人行业的兴起,多机器人自主路径规划也越来越受到关注,对于多智能体寻路(MAPF)。一般的操作会给定一个地图、机器人集群、以及它们的初始位置和目的地&am…...

SAP-MM-计算方案字段解析

01、 “步骤”:标识此条件类型在计算方案中的顺序编号,此编号会影响到后续业务中条件类型的排序,不同条件类型之间的编号最好间隔大一些,这样设置便于以后对计算方案进行扩展; 02、 “计数器”&#xff1…...

go-gf框架两个表以事务方式写入示例

下面是对每一行代码的中文解释: // 创建数据库连接对象 var tx gdb.TX这行代码声明了一个名为tx的变量,类型为gdb.TX,表示数据库事务对象。 // 开启事务 if tx, err g.DB().Ctx(ctx).Begin(ctx); err nil {这行代码通过在数据库连接&…...

2023-5-31第三十一天

conform顺从,遵从,一致 squeeze挤压 proprietary专卖权,专利的,所有的 endeavor努力,尽力 comprise由...组成,包含 compose组成,写作 compact小型的 consult咨询,查阅 expan…...

什么是MQTT?mqtt协议和http协议区别

摘要: 什么是MQTT?MQTT(Message Queuing Telemetry Transport)译为:消息队列遥测传输,是一种轻量级的通讯协议,用于在网络上传输消息。MQTT 最初由 IBM 发布,后来成为 OASIS&#xf…...

平台使用篇 | 批处理(bat)脚本使用教程(四)

导读 一个开启多机软件在环仿真的批处理文件 (对应卓面RflyTools文件夹中SITLRun快捷方式),双击它,输入想要生成的飞机数量,即可生成多机软件在环仿真,等待RflySim3D显示3DFixed 4/4,然后可通过QGC控制飞机起飞。运行…...

接口的讲解

在这里之前我想童鞋们都学习过了springmvc。mybatis-plus。Springboot等一些框架 那么下面我们就整合这些框架 我们通过写crud这些接口 写接口的第一步就是引入pom文件 在pom文件里引入一下几种依赖 引入父级工程 thymeleaf导入模版工具类 SpringMVCjar包文件 热部署工具 l…...

G0第21章 :gin框架介绍、RESTful API、Gin渲染

G0第21章 :gin框架 01 内容介绍 https://gin-gonic.com/zh-cn/docs/ web本质 Web是基于HTTP协议进行交互的应用网络Web就是通过使用浏览器/APP访问的各种资源 package mainimport ("fmt""net/http" )func sayHello(w http.ResponseWriter, r…...

python list,dict操作

一、list 操作 Python中的列表是一种有序、可变的数据类型,可以存储任意类型的数据。以下是Python中常用的列表操作: 创建列表:使用[]或list()函数创建一个空列表,或者使用[value1, value2, ...]创建一个包含初始值的列表。 访问…...

我有一个页面a,在页面a中调用了一个组件,然后组件中要切换页面a的一块区域,该怎么实现?

你可以在组件中使用路由的编程式导航,通过访问路由实例来切换页面a的对应区域。具体来说,你可以先在页面a中设置一个具有唯一标识的占位符元素,然后在组件中通过路由实例访问这个元素并修改其内容或样式来实现区域切换。路由的编程式导航可以…...

ChatGPT唤醒AI游戏:AIGC持续走深,游戏或成AI最佳抓手

随着人工智能技术的不断发展,AI在游戏行业的应用日益深入。本文将详细探讨ChatGPT在AI游戏领域的应用,以及游戏如何成为AI技术的最佳抓手。让我们一起探讨这个有趣且充满潜力的领域。 一、引言 人工智能在各行各业都取得了巨大的成功,而游戏…...

远程服务和web服务和前端,三方通过socket和websocket进行双向通信传输数据

1. 什么是socket? 在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 2. 什么是websocket?…...