《Java和Android开发实战详解》——1.1节编程语言基础知识

本节书摘来自异步社区《Java和Android开发实战详解》一书中的第1章,第1.1节编程语言基础知识,作者 陈会安,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.1编程语言基础知识
Java和Android开发实战详解
“编程语言”(Programming Language)是人类告诉计算机如何工作的一款语言,如同人与人之间沟通使用自然语言,编程语言被设计用于人类与计算机之间进行沟通。从技术角度来说,编程语言就是一款将执行指令传达给计算机的标准通信技术。

1.1.1 程序、软件与应用程序
在说明编程语言之前,我们需要了解什么是程序、软件与应用程序。简单地说来,编程语言提供了语法,可以让我们编写程序代码来建立程序,程序经编译建立成应用程序后,就可以归类成不同软件。

1.程序
“程序”(Program)是使用指定编程语言所编写的特殊符号的组合,这些符号组成指令和语句,再进一步编写成程序代码,程序代码可以告诉计算机解决指定问题的步骤。

简单地说,程序就像是一个转换器,当从计算机键盘或鼠标取得输入数据后,程序就可以将数据转换成有用的信息,如图1-1所示。


68385e5f8b68078d423701e8a0b583174cb1c26b

如图1-1所示的输出结果可能显示在屏幕或是从打印机打印出来,计算机只是按照程序的指令将输入数据进行转换,并产生所需的输出结果。换句话说,为了让计算机能够看懂程序,程序需要根据编程语言的规则、结构和语法,以指定文字或符号来编写程序,例如,使用Java编程语言编写的程序称为Java程序代码(Java Code),或称为“源代码”(Source Code)。

编程语言与人类使用的自然语言的最大不同,在于我们平常使用的语言并不要求十分精确,就算有一些小错误也一样可以猜测其意义。但是计算机就没有这么聪明,一定要严格遵照编程语言规则来编写程序,否则计算机执行程序就会产生错误。

2.软件与应用程序
“应用程序”(Application)是一款处理指定工作的计算机程序,例如,数学计算分析、文字处理、电子表格工具以及编程语言的集成开发工具等。“软件”(Software)是在计算机执行的应用程序或者操作系统的泛称,通常软件可以是一款或多款程序或整套应用程序的泛称。

1.1.2 编程语言的种类
随着计算机科技的进步,编程语言已经发展成一个庞大的族群。在编程语言的分类上,按照其发展时代来区分可以分为五代,如表1-1所示。


64632de258e322e412bbabf02f7c6873359a6260

所谓第四代语言是特定应用程序专用的编程语言,例如,用于数据库查询的SQL语言。第五代编程语言主要是使用在人工智能和专家系统的逻辑分析语言,也称为“自然语言”(Natural Languages)。

1.1.3 低级语言
如果按照与程序编写者的亲和度来区分,编程语言可以分为偏向计算机的低级语言和编写者容易了解的高级编程语言。

低级语言(Low Level Language)是一款面向计算机不容易了解的编程语言。简单地说,它是计算机看得懂的编程语言。所以执行效率高,但是用户并不易学习。低级语言主要有两款:机器语言和汇编语言。

1.机器语言(Machine Language)
机器语言使用二进制的0和1来表示程序代码,计算机可以直接执行机器语言的程序代码,所以执行效率最高,如下所示:

0111 0001 0000 1111
1001 1101 1011 0001

2.汇编语言(Assembly Language)
汇编语言使用一些由简单符号组成的指令集来代表机器语言0和1表示的二进制程序代码。其建立的程序代码只需使用“汇编程序”(Assembler)就可以转换成机器语言,然后在计算机上执行。汇编语言是一款十分接近机器语言的编程语言,如下所示:

MOV AX 01
MOV BX 02
ADD AX BX

1.1.4 高级语言
高级语言(High Level Languages)是一种接近人类语言的编程语言,或称为半英文(Half-English)编程语言。因为计算机不能马上看懂,所以需要进一步翻译转换成机器语言,其转换的程序代码通常比直接使用机器语言编写的代码冗长,所以效率较低,但是非常适合用户学习。

目前常见的高级语言有:Basic、C/C++、C#、Java、Fortran、COBOL和Pascal等。高级语言需要进行翻译,将程序代码转译成机器语言的执行文件后,才能在计算机上执行,翻译方式有两款:使用编译程序和使用解释程序。

1.编译程序(Compiler)
C/C++等编程语言属于编译型语言,编译程序需要检查完整个程序文件的代码,在完全没有错误的情况下,才会翻译成机器语言的程序文件。其主要功能有两项,具体如下所示。

检查程序错误。
将程序翻译成机器语言的程序文件。
2.解释程序(Interpreter)
早期Basic语言(例如BASICA、QuickBasic等)和目前网页技术常见的“脚本”(Scripts)语言,例如VBScript和JavaScript,都属于解释型语言。解释程序在处理程序代码时,并不会输出可执行文件,而是直接一个指令一个动作,一行一行地执行程序代码,其执行效率相对较低,但是非常便于系统开发阶段的程序调试。

1.1.5 程序是如何执行的
程序在计算机实际执行的过程对于高级编程语言来说并非十分重要。不过,对计算机执行程序有一定的认识,在程序设计时仍然有一定的帮助。

不论我们是使用高级或低级编程语言来编写程序,所编写的程序代码最后都会编译成计算机看得懂的机器语言,这些指令是CPU支持的“指令集”(Instruction Set)。

因为各计算机使用的CPU不同,其支持的指令集也不相同。但要认识到,虽然高级语言有很多种,但是CPU只懂一种语言,也就是其能执行的机器语言,如图1-2所示。

图1-2所示为计算机的基本结构,其中CPU使用总线来连接周边设备,在图1-2只绘出主存储器。CPU执行机器语言程序是一种例行工作,过程只是依次将存储在内存的机器语言指令“取出和执行”(Fetch-and-execute)。简单地说,CPU从内存中访问出指令,然后执行此指令;取出下一个指令,再执行它。现在我们可以来简单了解程序执行的步骤,具体如下所示。

在计算机主存储器存储机器语言的程序代码和数据。
由CPU从内存依次取出一个个机器语言指令,然后执行它。当然,CPU并非真正了解机器语言在做什么,这只是它的例行工作——依次执行机器语言指令,所以用户设计的程序不能有错误,因为CPU实在没有聪明到能够替您的程序纠错。


4b42189dafde211e71f1ca3ab19b86c8ecb95527

1.中央处理器
中央处理器(CPU)是计算机实际提供运算功能的组件,目前的个人计算机都是使用单芯片集成电路(Integrated Circuit,IC)来作为处理器的,其主要功能是使用“ALU”(Arithmetic and Logic Unit,算术逻辑单元)中的逻辑电路进行运算,执行机器语言的指令。

在CPU拥有很多组“寄存器”(Registers),寄存器是位于CPU内部的内存,可以暂时存储数据或机器语言指令,例如,执行加法指令需要两个操作数,运算时这两个操作数数据就存储在寄存器。

CPU中拥有一些控制“取出和执行”(Fetch-and-execute)用途的寄存器,其说明如表1-2所示。


6c72c794924c0f5d0fd6bcd460b167d7c83e4636

现在我们可以进一步查看“取出和执行”(Fetch-and-execute)过程,CPU的执行速度是依据Clock产生的频率,即以MHz为单位的速度来执行存储在IR的机器语言指令。在执行后,以IC寄存器存储的地址,通过MDR和MAR寄存器从总线取得内存的下一个指令,然后执行指令,重复上述操作即可执行完整个应用程序。

2.内存
当我们执行程序时,操作系统可以将存储在硬盘或软盘的执行文件加载计算机主存储器(Main Memory)上,CPU可以从内存依次加载指令并执行。

事实上,我们编写的程序代码本身和使用的数据都存储在RAM(Random Access Memory)中,每一个存储单位有数字编号,称为“地址”(Address)。如同大楼里的信箱,门牌号码是地址,信箱内容是程序代码或数据,存储数据占用的内存空间大小,需根据使用的数据类型而定。

计算机CPU访问内存数据的主要步骤,如下所示。

step01送出读写的内存地址:当CPU读取程序代码或数据时,需要送出欲取得的内存地址,例如,内存地址4。

step02读写内存存储的数据:CPU可以从指定地址读取内存内容,例如,地址4中的内容是01010101,这是一个二进制值,每一个0或1是一个“位”(Bit),8个位称为“字节”(Byte),这是计算机内存的最小存储单位。

每次CPU从内存读取的数据量,需根据CPU与内存间的“总线”(Bus)而定,在购买计算机时,常听到所谓32位或64位的CPU,就是指CPU每次可以读取4个字节或8个字节数据来进行运算。当然每次CPU可以读取越多的数据量,CPU的执行效率也越高。

3.输入/输出设备
计算机的输入/输出设备(Input/Output Devices)是程序的窗口,可以让用户输入数据和显示程序的执行结果。目前而言,计算机最常用的输入设备是键盘和鼠标;输出设备是屏幕和打印机。

当人们在“记事本”使用键盘输入英文字母和数字时,屏幕马上显示对应的英文或中文字。

但对于计算机来说,当用户在键盘按下大写A字母时,传给计算机的是1个一字节宽的数字(英文字母和数字只使用其中的7位)。目前个人计算机主要是使用“ASCII”(American Standard Code for Information Interchange)码来表示字符,例如,大写A对应的ASCII码是65,换句话说,计算机实际显示和存储的数据是数值65。

同样的,在屏幕上显示的中文字,我们看到的是中文字,计算机看到的仍然是内码。因为中文字很多,需要使用2个字节的数值来代表常用的中文字,繁体中文的内码是Big 5,简体中文有GB和HZ。也就是说,1个中文字的内码值占用两个字节,相当于两个英文字母。

目前Windows操作系统也支持Unicode,它是由Unicode Consortium组织所制定的一个能包括全世界文字的内码集,包含GB2312和Big5的所有内码集,即ISO 10646内码集。有两种常用的编码方式:UTF-8,为8位编码;UTF-16,为16位的编码。

4.二级存储设备
二级存储设备(Secondary Storage Unit)是一种能够长时间和提供高容量存储数据的设备。计算机程序与数据是在加载到内存后,才依次让CPU来执行,不过,在此之前这些程序与数据存储在二级存储设备,例如硬盘驱动器。

当我们在Windows操作系统使用“记事本”编辑Java程序代码时,这些数据只会暂时存储在计算机的主存储器,因为主存储器在关闭电源后,其存储的数据就会消失,为了长时间存储这些数据,我们需要使用二级存储设备,比如将数据存储到硬盘。

在二级存储设备的程序代码文件可以长时间存储,当我们需要编译和执行程序时,再将文件内容加载主存储器。基本上,硬盘是最常用的二级存储设备,此外,CD和DVD光驱也是计算机常用的二级存储设备。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第6章 数组与字符串 96 6.1 数组基础 96 6.2 一维数组与多维数组 96 6.2.1 一维数组 97 6.2.2 二维与多维数组 99 6.2.3 可变长度的参数列表 101 6.3 字符串类 102 6.3.1 Java字符串是一种引用数据类型 103 6.3.2 字符串处理 103 6.3.3 StringBuffer类 107 6.4 字符串与数值的转换 109 6.4.1 将字符串转换成数值 109 6.4.2 将数值转换成字符串 110 6.5 对象数组 112 6.6 查找与排序 112 6.6.1 排序与查找的基础 113 6.6.2 冒泡排序法 113 6.6.3 顺序查找法 115 6.6.4 二分查找法 116 习题 117 第7章 类与对象 119 7.1 面向对象的应用程序开发 119 7.1.1 传统的应用程序开发 119 7.1.2 面向对象的应用程序开发 120 7.2 面向对象基础 120 7.2.1 对象基础 121 7.2.2 面向对象程序语言 121 7.3 类与对象 122 7.3.1 类与对象 122 7.3.2 成员变量的访问 126 7.3.3 成员方法的使用 128 7.3.4 重载方法 130 7.4 类的构造函数 132 7.4.1 类的构造函数 132 7.4.2 使用this引用对象本身 134 7.5 对象成员 136 7.6 对象使用类变量与方法 137 习题 140 第8章 继承、抽象类与接口 142 8.1 类的继承 142 8.1.1 类层次结构 142 8.1.2 类的继承 143 8.1.3 重写和隐藏父类的方法 145 8.1.4 隐藏父类的成员变量 147 8.1.5 使用父类的构造函数 149 8.2 接口 151 8.2.1 接口简介 151 8.2.2 创建与使用接口 152 8.2.3 在类实现多个接口 154 8.3 接口的继承 155 8.3.1 继承接口 156 8.3.2 接口的多重继承 157 8.4 抽象类 160 8.5 抽象类与接口 163 8.6 常量类 166 习题 168 第9章 嵌套类、多态与包 170 9.1 嵌套类 170 9.1.1 嵌套类 170 9.1.2 嵌套类的使用 173 9.2 匿名嵌套类 175 9.2.1 类继承的匿名内层类 175 9.2.2 实现接口的匿名内层类 176 9.2.3 匿名内层类与this和final关键字 178 9.3 多态基础 180 9.3.1 静态绑定与动态绑定 180 9.3.2 Java语言支持的多态 181 9.4 多态的实现 181 9.4.1 使用类继承来实现多态 181 9.4.2 使用接口来实现多态 184 9.5 包 186 9.5.1 Java包基础 186 9.5.2 package和import命令语句的使用 187 习题 190 第10章 异常处理、线程与泛型集合对象 191 10.1 Java的异常处理 191 10.1.1 异常处理的架构 191 10.1.2 Throwable类 191 10.1.3 异常处理语句 192 10.1.4 同时处理多种异常 194 10.2 抛出异常与自定义Exception类 196 10.2.1 使用throw关键字 196 10.2.2 在方法抛出异常 197 10.2.3 自定义Exception类 199 10.3 线程的基础知识 200 10.4 创建Java的线程 201 10.4.1 实现Runnable接口来创建线程 201 10.4.2 继承Thread类来创建线程 204 10.5 集合对象简介 205 10.5.1 Java Collections Framework 206 10.5.2 集合接口 206 10.5.3 泛型集合类概述 207 10.6 泛型集合类 208 10.6.1 HashSet类 208 10.6.2 ArrayList类 210 10.6.3 Iterator接口 211 10.6.4 ListIterator接口 213
第1章 编程语言Java基础知识 1 1.1 编程语言基础知识 1 1.1.1 程序、软件与应用程序 1 1.1.2 编程语言的种类 2 1.1.3 低级语言 2 1.1.4 高级语言 3 1.1.5 程序是如何执行的 3 1.2 Java基础知识 6 1.2.1 Java平台 6 1.2.2 Java语言的版本 6 1.2.3 Java编程语言的特点 8 1.3 Java语言的开发环境 8 1.4 搭建Java开发环境 9 1.4.1 安装与设置JDK 9 1.4.2 安装与启动Eclipse IDE 12 习题 15 第2章 构建Java应用程序 16 2.1 如何构建应用程序 16 2.1.1 如何编写程序代码 16 2.1.2 程序设计的基础 17 2.1.3 算法 18 2.2 构建Java应用程序 19 2.2.1 构建第一个Java程序 19 2.2.2 使用Eclipse IDE构建第2个Java程序 21 2.2.3 使用书的范例项目 24 2.3 Java程序结构与基本输出 24 2.4 Eclipse IDE的项目管理与使用 26 2.4.1 切换工作空间 26 2.4.2 Eclipse IDE的项目管理 27 2.4.3 Eclipse IDE的基本使用 29 2.5 良好的Java程序代码编写风格 32 2.5.1 程序语句 32 2.5.2 程序块 33 2.5.3 程序注释 33 2.5.4 避免太长的程序代码 33 2.5.5 程序代码缩排 33 学习评估 34 第3章 变量、数据类型与运算符 35 3.1 变量与数据类型基础 35 3.2 变量的命名与声明 35 3.2.1 Java的命名语法 36 3.2.2 变量的声明 37 3.2.3 赋值语句 38 3.2.4 常量的声明与使用 40 3.3 Java的数据类型 40 3.3.1 整数类型 41 3.3.2 浮点型 42 3.3.3 布尔型 43 3.3.4 字符型 43 3.4 Java的表达式 45 3.4.1 运算符的优先级 46 3.4.2 算术运算符 46 3.4.3 递增和递减运算 48 3.4.4 关系与条件运算符 49 3.4.5 位运算符 51 3.4.6 指定运算符 54 3.5 数据类型的转换 54 3.5.1 宽化数据类型转换 54 3.5.2 窄化数据类型转换与类型转换运算符 56 习题 57 第4章 流程控制结构 58 4.1 流程控制与UML活动图 58 4.1.1 UML活动图 58 4.1.2 流程控制的种类 59 4.2 程序块与控制台基本输入 60 4.2.1 程序块 60 4.2.2 控制台的基本输入 62 4.3 条件控制语句 63 4.3.1 if条件语句 63 4.3.2 if/else条件语句 64 4.3.3 switch条件语句 65 4.3.4 ?:条件运算符 68 4.4 循环控制语句 69 4.4.1 for循环语句 69 4.4.2 前测式的while循环语句 71 4.4.3 后测试的do/while循环语句 72 4.4.4 break和continue关键字 73 4.5 嵌套循环 74 习题 76 第5章 类方法 78 5.1 过程与函数基础 78 5.2 类方法 78 5.2.1 创建Java类方法 79 5.2.2 类方法的参数传递 81 5.2.3 类方法的返回值 83 5.2.4 值传递与引用传递 84 5.3 类变量和变量作用域 86 5.3.1 Java的类变量 86 5.3.2 Java的变量作用域 87 5.4 递归程序设计 89 5.4.1 递归方法概述 89 5.4.2 递归的阶乘函数 89 5.5 Math类及其类方法 91 5.5.1 求随机数、最大和最小值 91 5.5.2 Math类的数学常量和方法 92
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值