第2章:程序设计语言

第2章:程序设计语言

在源程序中,可由用户(程序员)为变量、函数和数据类型等命名。

脚本语言一般运行在解释器或虚拟机中,便于移植,开发效率较高。

变量是计算机内存单元的抽象,在程序中表示数据,具有名称、类型、值、地址、作用域、存储类别等属性,其值在运行过程中由指令进行修改。

常量也用于在程序中表示数据,但常量在程序运行过程中不能修改,常量也具有类型,如整型常量、浮点型常量、字符串常量等,也称为字面量或文字

编译和解释是语言处理的两种基本方式。编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段,以及符号表管理和出错处理模块。 解释过程在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。 这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。

编译是将高级语言源程序翻译成机器语言程序(汇编形式或机器代码形式),反编译是编译的逆过程。反编译通常不能把可执行文件还原成高级语言源代码,只能转换成功能上等价的汇编程序。

事实上,脚本语言都是动态语言,而动态语言都是解释型语言,不管它们是否是面向对象的语言。

动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。程序运行过程中,把丽数(或过程)调用与响应调用所需要的代码相结合的过程称为动态绑定。

静态绑定是指在程序编译过程中,把函数(方法或者过程)调用与响应调用所需的代码结合的过程称之为静态绑定。

Java程序设计

1)抽象类

抽象类通过关键字abstract实现,抽象类的目的是定义一个框架,规定某些类必须具有的一些 共性。包含抽象方法的类一定是抽象类,所谓抽象方法是指没有函数体的方法。抽象类的直接 派生类必须实现其抽象方法,抽象类只能用于继承,不能创建对象。

2)接口 接口用关键字interface声明,只能用于继承。注意:此时关键字为implements(实现)。接口用 于替代多继承的概念,能实现多继承的部分特点,又避免了多继承的混乱,还能起到规定程序 框架的作用。注意:接口也可以用于多态。直接继承了接口的类,必须实现接口中的抽象方法 间接的则可以实现,也可以不实现。

3)抽象类与接口的异同 接口和抽象类都不能创建对像 抽象类不能参与多继承,抽象类可以有非静态的成员变量,可以有非抽象方法。 接口可以参与多继承,所有属性都是静态常量,所有方法都是public抽象方法。

Java是即时编译程序栈空间:当我们在创建一个变量时,在栈空间中会开辟一个空间来存放变量的类型和变量名。

当我们在给基本数据类型赋值时他的值同样也是存放在栈空间中,而在给引用类型赋值时,变量名时存放在栈空间中而数据时存放在堆空间中。

堆空间:当我们创建的变量类型不是基本数据类型而是引用类型的数据时,就要用到堆空间,所以堆空间在java中存放的数据是引用类型的数据比如:数组、字符串、对象。

在C/C++语言的编译过程中,源代码会经过以下步骤来形成可执行程序: 1、预处理:预处理器会处理源代码中的预处理指令,如#include、#define等。 2、编译:编译器会将预处理后的代码转换为汇编语言。 3、汇编:汇编器会将编译生成的汇编代码转换为机器语言的目标文件。 4、链接:链接器会将多个目标文件以及必要的库文件链接起来,形成最终的可执行程序。

词法分析阶段依据语言的词法规则,对源程序进行逐个字符地扫描,从中识别出一个个“单词”符号,主要是针对词汇的检查。 语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”和“程序” 等。语法规则就是各类语法单位的构成规则,主要是针对结构的检查。 语义分析阶段分析各语法结构的含义,检查源程序是否包含语义错误,主要针对句子含义的检查。

编译器把源程序先翻译,得到目标代码。最后由机器直接执行。 整个过程运行效率高,但是只适合特定的机器,所以可移植性差。

函数调用与函数本身的关联,以及成员访问与变量内存地址之间的联系,称为绑定。在计算机语言中有两种主要的绑定方式,即静态绑定和动态绑定。静态绑定发生于数据结构和数据结构间,程序执行前,有编译时绑定,通过对象调用,因此不能运用任何运行期的信息。它针对函数调用与函数的主体,或是变量与内存中的区块:动态绑定则是运行时绑定,通过地址实现,只用到运行期的可用信息。题目中把调用和响应调用所需执行的代码加以结合发生在编译后,因此属于动态绑定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1186. 删除一次得到子数组最大和(leetcode)

1186. 删除一次得到子数组最大和(leetcode) 题目描述 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选…

第一节:如何开发第一个spring boot3.x项目(自学Spring boot 3.x的第一天)

大家好,我是网创有方,从今天开始,我会记录每篇我自学spring boot3.x的经验。只要我不偷懒,学完应该很快,哈哈,更新速度尽可能快,想和大佬们一块讨论,如果需要讨论的欢迎一起评论区留…

Pytorch实战(二)

文章目录 前言一、LeNet5原理1.1LeNet5网络结构1.2LeNet网络参数1.3LeNet5网络总结 二、AlexNext2.1AlexNet网络结构2.2AlexNet网络参数2.3Dropout操作2.4PCA图像增强2.5LRN正则化2.6AlexNet总结 三、实战3.1LeNet5模型搭建3.2模型训练 前言 参考原视频:哔哩哔哩。 …

kafka和rabbitmq的区别

1、语言与开发重点 1、Kafka:采用Scala语言开发,主要用于处理活跃的流式数据和大数据量的数据处理。 2、RabbitMQ:由Erlang语言开发,主要用在实时对可靠性要求比较高的消息传递上。 2、结构与交互方式: 1、Kafka&a…

Java中的WebSocket编程详解

Java中的WebSocket编程详解 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在当今互联网应用中,实时通讯变得越来越重要,而WebSocket作为…

【后端面试题】【中间件】【NoSQL】ElasticSearch面试基本思路和高可用方案(限流、消息队列、协调节点、双集群)

基本思路 业务开发面试Elasticsearch的时候基本问的是基础知识以及倒排索引。 Elasticsearch最基本的可用性保障就是分片,而且是主从分片,所以遇到Elasticsearch如何做到高可用这个问题的时候,首先要提到这一点。 Elasticsearch高可用的核心…

【Android】ViewPage2嵌套Fragment+SeekBar横向滑动冲突

问题描述 ViewPage2嵌套FragmentSeekBar,拖动SeekBar的进度条时,触发ViewPage2的滑动。 解决方案: 方案一:通过事件总线ViewPage2的isUserInputEnabled属性 子Fragment: class SeekBarFragment : Fragment() {priv…

手机屏幕贴合项目(ni视觉如何找矩形的角坐标)

首先,我们存储了cg和dito感兴趣八个角图像的模板,用来匹配位置。 cover指的是cg的四个角模板,lcm是dito四个角匹配模板。 其次,我们采集的8副图像(m_DlgCCDViewArr[2][4])中一定包含匹配模板的特征。 好&…

Json与Java类

简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON数据由键值对构成,并以易于阅读的文本形式展现,支持数组、对象、字符串、数字、布尔值…

笔灵AI写作:释放创意,提升写作效率的秘诀

内容为王,在内容创作的世界中尤为重要。然而,面对写作时常常感到无从下手:有时缺乏灵感,有时难以表达清楚自己的想法。AI写作助手的出现,为这些问题提供了创新的解决方案,极大地改变了内容创作的过程。 今…

微调和rag的区别?

微调和RAG(Retrieval-Augmented Generation)在多个维度上存在显著的区别。以下是它们之间的主要差异: 1. **知识维度**: - RAG对知识的更新时间和经济成本更低。它不需要训练,只需要更新数据库即可。 - RAG对知识的掌控…

Pytest+Allure+Yaml+Jenkins+Gitlab接口自动化中Jenkins配置

一、背景 Jenkins(本地宿主机搭建) 拉取GitLab(服务器)代码到在Jenkins工作空间本地运行并生成Allure测试报告 二、框架改动点 框架主运行程序需要先注释掉运行代码(可不改,如果运行报allure找不到就直接注释掉) …

C++知识点总结 (02):C++中的语句(简单语句、条件语句、迭代语句、跳转语句、异常处理语句、try语句等)

文章目录 1、简单语句(1)空语句(2)复合语句 2、条件语句3、迭代语句(1)常规for循环(2)范围for循环(3)while和do...while 4、跳转语句(1)break(2)continue(3)goto 5、异常处理语句(1)标准异常(2)throw抛出异常 6、try语句 1、简单语句 (1)空语句 ; (2)复合语句 用花括号括起来的…

Feign远程调用在微服务架构中的实践与应用

Feign远程调用在微服务架构中的实践与应用 随着软件架构的不断演进,微服务架构因其高度解耦、可扩展性强等特性而备受推崇。在微服务架构中,各个服务之间需要频繁地进行远程调用以实现业务功能的整合。而Feign作为一个轻量级的HTTP客户端,以…

nginx添加模块

问题描述:已经在运行的宝塔中的nginx如何添加模块 1. 进入宝塔nginx的脚本目录 cd /www/server/panel/install 2. 读修改宝塔官方写的脚本 vim nginx.sh 3. 找到字符 ./configure - 添加模块 --add-module/home/root/app/nginx-module/echo-nginx-module-0.62 …

Linux笔记之Bash脚本中的EOF

Linux笔记之Bash脚本中的EOF code review! 文章目录 Linux笔记之Bash脚本中的EOF基本用法自定义结束符变量替换禁用变量替换用于脚本嵌入重定向到文件与命令组合总结 在 Bash 脚本中, EOF 通常用于定义一个多行字符串或文档块。这种技术被称为“Here Document”&a…

什么是等级保护2.0?

等保的全称是信息安全等级保护,是《网络安全法》规定的必须强制执行的,保障公民、社会、国家利益的重要工作。 官方定义:等级保护是对信息和信息载体按照重要性等级分级别进行保护的一种工作,指对国家重要信息、法人和其他组织及公…

git通过命令方式push代码到远程

本地仓库和远程仓库关联操作 通过关联远程分支可以将本地的分支与远程仓库中的分支进行关联,从而实现本地分支与远程分支的同步和交互。 关联远程分支的步骤如下: 1. 首先,使用git remote -v命令查看当前仓库关联的远程仓库。 git remote …

认识100种电路之放大电路

在电子技术的广袤世界中,放大电路犹如一颗璀璨的明珠,发挥着至关重要的作用。那么,为什么电路需要放大?放大的原理又是什么?实现放大又需要用到哪些元器件以及数量如何呢?接着往下看,会解开你的…

intellij idea中使用R语言plot画图无图像问题

1、在intellij idea中使用R语言plot函数时,会遇到各种各样的问题,会出现图片不显示问题, 可以看到,目前我电脑r语言版本为4.2.1,输入下面代码: # # 安装包 # install.packages(ggplot2) # library(ggplot2…