文章目录
应知应会
- 计算机是存储和处理数据的电子设备。
- 计算机包括硬件和软件两个部分。
- 硬件是计算机中可以触摸到的物理部分。
- 计算机程序,也就是通常所说的软件,是一些不可见的指令,他们控制硬件完成任务。
- 计算机程序设计就是编写让计算机执行的指令(即代码)。
- 中央处理器(CPU)是计算机的大脑。它从内存获取指令并且执行这些指令。
- 计算机使用0或1,因为数字设备有两个稳定的状态,习惯上就是指0和1。
- 一个比特是指二进制数0或1。
- 一个字节是指8比特的序列。
- 内存存储CPU要执行的数据和程序指令。
- 内存单元是字节的有序序列。
- 内存是不能长久保存数据的,因为断电时信息就会丢失。
- 程序和数据永久地保存在存储设备里,当计算机确实需要它们时被移入内存。
- 机器语言是一套内嵌在每台计算机的原始指令集。
- 汇编语言是一种低级程序设计语言,它用助记符表示每一条机器语言的指令。
- 高级语言类似英语,易于学习和编写程序。
- 用高级语言编写的程序称为源程序。
- 编译器是将源程序翻译成机器语言程序的软件。
- 操作系统(OS)是管理和控制计算机活动的程序。
- Java是平台无关的,这意味着只需编写一次程序,就可以在任何计算机上运行。
- Java程序可以内嵌在HTML网页内,通过Web浏览器下载,给Web客户带来生动的动画和灵活的交互性。
- Java源程序文件名必须和程序中的公共类名一致,并且以扩展名.java结束。
- 每个类都被编译成一个独立的字节码文件,该文件名与类名相同,扩展名为.class。
- 使用javac命令可以从命令行编译Java源代码文件。
- 使用java命令可以从命令行运行java类。
- 方法包含在类中。每个可执行的Java程序必须有一个main方法。main方法是程序开始执行的入口。
- 编译错误可以分为3类:语法错误、运行时错误和逻辑错误。
1 引言
- 程序设计指创建(或者开发软件),软件也称为程序。简言之,软件包含了指令,告诉计算机(或者计算设备)做什么。
2 什么是计算机
要点提示:计算机是存储和处理数据的电子设备。
计算机包括硬件(hardware)和软件(software)两部分。一般来说,硬件包括计算机中可以看得见物理部分,而软件提供看不见的指令,这些指令控制硬件并且使得硬件完成特定的任务。
一台计算机是由以下几个主要的硬件组件构成的:
- 中央处理器(CPU)
- 内存(主存)
- 存储设备(例如,磁盘和光盘)
- 输入设备(例如,鼠标和键盘)
- 输出设备(例如,显示器和打印机)
- 通信设备(例如,调制解调器和网卡)
&mesp; 这些组件通过一个称为总线(bus)的子系统连接。在个人计算机中,总线搭建在主板上,主板是一个连接计算机各个部分的电路板。
2.1 中央处理器
中央处理器(Central Processing Unit,CPU)是计算机的大脑。它从内存中获取指令,然后执行这些指令。CPU通常由两部分组成:控制单元(control unit)和算术/逻辑单元(arithmetic/logic unit)。控制单元用于控制和协调其他组件的动作。算术/逻辑单元用于完成数值运算(加法、减法、乘法、除法)和逻辑运算(比较)。
每台计算机都有一个内部时钟,该时钟以固定速度发射电子脉冲。这些脉冲用于控制和同步各种操作的步调。时钟速度越快,在给定的时间段内执行的指令就越多。核是指处理器中实现指令读取和执行的部分。
2.2 比特和字节
计算机就是一系列的电路开关。每个开关存在两种状态:关(off)和开(on)。简单而言,在计算机中存储信息就是将一系列的开关设置为开或者关。如果电路是开的,它的值是1。如果电路是关的,它的值是0。这些0和1被解释为二进制数字系统中的数,并且将它们称为比特(bit,二进制数)。
计算机中的字节是最小存储单元。每个字节由8比特组成。各种类型的数据都被编码为字节序列,这些都是系统根据编码模式(schema)来自动完成的。编码模式是一系列的规则,控制计算机将字符、数字和符号翻译成计算机可以实际工作的数量。
2.3 内存
计算机的内存由一个有序的字节序列组成,用于存储程序及程序需要的数据。内存是计算机执行程序的工作区域。一个程序和它的数据在被CPU执行前必须移到计算机的内存中。
每个字节都有一个唯一的地址,使用这个地址确定字节的位置,以便于存储和获取数据。因为可以按任意顺序存取字节,所以内存也被称为随机访问存储器(Random-Access Memory,RAM)
2.4 存储设备
&emsp 计算机的内存(RAM)是一种易失的数据保存形式:断电时存储在内存中的信息就会丢失。程序和数据被永久地存放在存储设备上,当计算机确实要使用它们时在移入内存,因为从内存读取比从存储设备读取要快得多。
存储设备主要类型:
- 磁盘驱动器
- 光盘驱动器(CD和DVD)
- USB闪存驱动器
驱动器(drive)是对存储介质进行操作的设备。存储介质物理地存储数据和程序指令。驱动器从介质读取数据并将数据写在介质上。
2.5 输入和输出设备
输入设备和输出设备让用户可以和计算机进行通信。最常用的输入设备是键盘(keyboard)和鼠标(mouse),而最常用的输出设备是显示器(monitor)和打印机(printer)。
2.6 通信设备
计算机可以通过通信设备进行联网。
3 编程语言
计算机程序(program)称为软件(software),是告诉计算机该做什么的指令。
3.1 机器语言
计算机的原生语言就是机器语言(machine language),即一套内嵌的原子指令集。这些指令都是以二进制代码的形式存在。
3.2 汇编语言
机器语言进行程序设计非常单调乏味,所编程序也非常难以读懂和修改。由此出现了汇编语言(assembly language),它使用短的描述性单词(称为助记符)来表示每一条机器语言指令。将汇编语言程序转换为机器代码的程序叫汇编器(assembler),这种语言被认为是低级语言。
3.3 高级语言
高级语言中的指令被称为语句。用高级语言编写的程序称为源程序(source program)或源代码(source code)。由于计算机不能运行源程序,源程序必须被翻译成可执行的机器代码。翻译可以由另外一种称为解释器或者编译器的编程工具来完成。
- 解释器从源代码中读取一条语句,将其翻译为机器代码或者虚拟机器代码,然后立刻运行。
- 编译器将整个源代码翻译为机器代码,然后执行该机器代码文件。
4 操作系统
要点提示:操作系统(Operating System,OS)是运行在计算机上的最重要的程序,它可以管理和控制计算机的活动。
操作系统的主要任务有:
- 控制和监视系统的活动
- 分配和调配系统资源
- 调度操作
4.1 控制和监视系统的活动
- 执行基本的任务(如识别来自键盘的输入,向显示器发送输出结果等等)
- 确保不同的的程序和用户同时使用计算机时不会互相干扰。
- 负责安全处理,确保未经授权的用户和程序无权访问系统。
4.2 分配和调配系统资源
操作系统负责确定一个程序需要使用哪些计算机资源(例如,CPU、内存、磁盘、输入和输出设备),并进行资源分配和调配以运行程序。
4.3 调度操作
操作系统负责调度程序的活动,以便有效利用系统资源。为了提高系统的性能,有多道程序设计(multiprogramming)、多线程(multithreading)和多处理(multiprocessing)技术。
- 多道程序设计允许多个程序通过共享CPU同时运行(原因:CPU的速度比其他组件快得多)
- 多线程允许单个程序同时执行多个任务。
- 多处理也称为并行处理(parallel processing),是指使用两个或多个处理器共同并行执行子任务,然后将子任务的结果合并以得到整个任务的结果 。
5 Java
要点提示:Java是一种功能强大和多用途的编程语言,可用于开发运行在移动设备、台式计算机以及服务器端的软件。
Java是简单的(simple)、面向对象的(object oriented)、分布式的(distributed)、解释型的(interpreted)、健壮的(robust)、安全的(secure)、体系结构中立的(architecture neutral)、可移植的(portable)、高性能的(high performance)、多线程的(multithreaded)和动态的(dynamic)。
6 Java语言规范、API、JDK、IDE
要点提示:Java语言规范定义了Java语法,Java库则在Java API中定义。JDK则是用于开发和运行Java程序的软件。IDE是快速开发程序的集成开发环境。
Java语言规范(Java language specification)是对语言的技术定义,包括Java程序设计语言的语法和语义。
应用程序接口(Application Program Interface,API)也称为库,包括为开发Java程序而预定义的类和接口。
Java的三个版本:
- Java标准版(Java Standard Edition,Java SE)可以用来开发客户端的应用程序。应用程序可以独立运行或作为applet在Web浏览器中运行。
- Java企业版(Java Enterprise Edition,Java EE)可以用来开发服务器端的应用程序,例如Java servlet、Java Server Page(JSP)和Java Server Faces(JSF)。
- Java微型版(Java Micro Edition,Java ME)用来开发移动设备的应用程序。
Java开发工具包(Java Development Toolkit,JDK)是由一套独立程序构成的集合,每个程序都是从命令行调用的,用于开发和测试Java程序。
7 一个简单的Java程序
要点提示:Java是从类中的main方法开始执行的。
控制台(console)指计算机的文本输入和显式设备。控制台输入指从键盘上接收输入,而控制台输出是指在显示器上显示输出。以下是一个简单的程序示例:
package topic00;
/**
* FileName: A0welcome.java
* @author victor
* date:2020.02.16
*/
public class A0welcome {
public static void main(String args[]) {
//Display message "Welcome to Java!" on the console
System.out.println("Welcome to Java!");
}
}
第8行定义了一个类。每个Java程序至少应该有一个类,每个类都有一个名字。按照惯例,类名(class name)都是以大写字母开头的。
第10行定义主方法(main method)。程序是从main方法开始执行的,一个类可以包含几个方法。main方法是程序开始执行的入口。
方法是包含语句的结构体。Java中每条语句都以分号结束,也称为语句结束符(statement terminator)。
保留字(reserved word)或关键字(keyword)对编译器而言都是有特定含义的,所以不能在程序中用于其他目的。
第11行是注释(comment),他标注该程序是干什么的,以及它是如何构建的。注释帮助程序员进行相互沟通以及理解程序。在Java中,在单行上用两个斜杆(//)引导注释,称为行注释(line comment);在一行或多行用/和/括住注释,称为块注释(block comment)。下面是两个注释的例子:
//This is line comment
/*This is block comment */
/*This is
block comment*/
程序中的一对花括号将程序的一些组成部份组合起来,形成一个块(block)。在Java中,每个块以左花括号({)开始,以右花括号(})结束。每个类都有一个将该类的数据和方法放在一起的类块(class block)。每个方法都有一个将该方法中的语句放在一起的方法块(method block)。块是可以嵌套的,即一个块可以放在另一个块内。
8 创建、编译和执行Java程序
要点提示:Java源程序保存为.java文件,编译为.class文件。.class文件有Java虚拟机(JVM)执行。
在执行程序之前,必须创建程序并进行编译。这个过程是反复执行的,如下图所示。如果程序有编译错误,必须修改程序来纠正错误,然后重新编译它。如果程序有运行时错误或者不能产生正确的结果,必须修改这个程序,重新编译,然后重新执行。
如果没有语法错误,编译器(compiler)就会生成一个扩展名为.class的字节码文件。Java语言是高级语言,而Java字节码是低级语言。字节码类似于机器指令,但它是体系结构中立的,是可以在任何带了Java虚拟机(JVM)的平台上运行的,虚拟机不是物理机器,而是一个可以解释Java字节码的程序。这是Java的主要优点之一:Java字节码可以在不同硬件平台和操作系统上运行。
警告:在命令行执行程序时,不要使用扩展名.class。使用java ClassName来运行程序。如果在命令行使用java ClassName.class,系统就会尝试读取ClassName.class.class。
提示:如果要运行一个不存在的类,就会出现NoClassDefFoundError的错误。如果执行的类文件中没有main方法或敲错了main方法,则会出现提示NoSuchMethodError。
提示:在执行一个Java程序时,JVM首先会用一个称为类加载器(class loader)的程序将类的字节码加载到内存中。如果你的程序中使用其他类,类加载程序会在需要它们之前动态地加载它们。当加载该类后,JVM使用一个称为字节码验证器(bytecode verifier)的程序来检验字节码的合法性,确保字节码不会违反Java的安全规范。Java强制执行严格的安全规范,以确保来自网络的Java程序不会篡改和危害你的计算机。
9 程序设计风格和文档
要点提示:良好的程序设计风格和正确的文档使程序更易阅读,并且能帮助程序员避免错误。
程序设计风格(programming style)决定程序的外观。例如整个一堆的代码,虽然可以正确编译和运行,但是其可读性非常差。文档(documentation)是关于程序的解释性评注和注释的一个结构体。程序设计风格与文档和编写代码一样重要。良好的程序设计风格和适当的文档可以减少出错的机率,并提高程序的可读性。
9.1 正确的注释和注释风格
Java文档注释(javadoc comment)。以/**开头,*/结尾。它们能使用JDK的javadoc命令提取成一个HTML文件。一般用来注释整个类或整个方法。
9.2 正确的缩进和空白
保持一致的缩进风格会使程序更加清晰、易读、易于调试和维护。缩进(identation)用于描述程序中组成部分或语句之间的结构性关系。对齐不影响JVM,但是正确的对齐能够使人们更易读懂和维护代码。
9.3 块的风格
块是由花括号围起来的一组语句。块的书写方式有两种常用方式:次行(next-line)风格和行尾(end-of-line)风格,如下所示:
//次行风格
public class Test
{
//your code
}
//行尾风格
public class Test{
//your code
}
10 程序设计错误
要点提示:程序设计错误可以分为三类:语法错误、运行时错误和逻辑错误。
10.1 语法错误
在编译过程中出现的错误称为语法错误(syntax error)或编译错误(compile error)。语法错误是由创建代码时的错误引起的。这类错误很容易发现,因为编译器会告诉你错误在哪,以及是什么原因造成的。
10.2 运行时错误
运行时错误(runtime error)是引起程序非正常中断的错误。运行应用程序时,当环境检测到一个不可能执行的操作时,就会出现运行时错误。
10.3 逻辑错误
当程序没有按预期的方式执行时就会发生逻辑错误。
参考文献
[1] 梁勇.Java语言程序设计(基础篇)[M].原书第十版. 北京:机械工业出版社