1. 计算机
1.1 计算机组成
计算机是存储和处理数据的电子设备。
包括硬件( hardware ) 和软件( software)
硬件组件构成:
- 中央处理器(CPU)
- 内存(主存)
- 存储设备(例如,磁盘和光盘)
- 输入设备(例如,鼠标和键盘)
- 输出设备(例如,显示器和打印机)
- 通信设备(例如,调制解调器和网卡)
1.1.1 中央处理器
中央处理器( Central Processing Unit, CPU) 是计算机的大脑。
CPU 通常由两部分组成:控制单元(control unit) 和算术 / 逻辑单元 (arithmetic/logic unit)
1.1.2 比特和字节
1字节 8 比特 KB MB GB TB
1.1.3 内存
计算机的内存由一个有序的字节序列组成,用于存储程序及程序需要的数据。
1.1.4 存储设备
计算机的内存( RAM)是一种易失的数据保存形式:断电时存储在内存中的信息就会丢 失。
程序和数据被永久地存放在存储设上,当计算机确实要使用它们时再移入内存,因为从内存读取比从存储设备读取要快得多。
存储设备主要有以下三种类型:
- 磁盘驱动器
- 光盘驱动器(CD 和 DVD)
- USB 闪存驱动器
1.1.5 输入和输出设备
输入设备和输出设备让用户可以和计算机进行通信。
最常用的输人设备是键盘 (keyboard) 和鼠标(mouse), 而最常用的输出设备是显示器(monitor) 和打印机(printer)。
1.1.6 通信设备
计算机可以通过通信设备进行联网,例如,拨号调制解调器( modulator/demodulator, 调制器 / 解调器 )、DSL、电缆调制解调器、有线网络接口卡,或者无线适配器。
1.2编程语言
计算机程序(program) 称为软件(software), 是告诉计算机该做什么的指令。
1.2.1 机器语言
计算机的原生语言因计算机类型的不同而有差异,计算机的原生语言就是机器语言 ( machine language), 即一套内嵌的原子指令集。以二进制代码的形式存在。
1.2.2 汇编语言
用机器语言进行程序设计是非常单调乏味的过程,而且,所编的程序也非常难以读懂和修改。为此,在计算的早期就创建了汇编语言,作为机器语言的替代品。汇编语言 (assembly language) 使用短的描述性单词(称为助记符)来表示每一条机器语言指令。例如, 助记符 add — 般表示数字相加,sub 表示数字相减。
汇编语言被认为是低级语言,因为汇编语言本质上非常接近机器语言,并且是机器相关的。
汇编语言的出现降低了程序设计的难度然而,由于计算机不理解汇编语言,所以使用一种称为汇编器(assembler)的程序将汇编语言程序转换为机器代码,如图所示。
1.2.3 高级语言
20 世纪 50 年代,新一代编程语言即众所周知的高级语言出现了。它们是平台独立的, 这意味着可以使用高级语言编程,然后在各种不同类型的机器上运行。高级语言很像英语, 易于学习和使用。高级语言中的指令称为语句。
用高级语言编写的程序称为源程序( source program) 或源代码( source code)。
1.3 操作系统
操作系统(Operating System, OS)是运行在计算机上的最重要的程序,它可 以管理和控制计算机的活动。
流行的操作系统有 Microsoft Windows、Mac OS以及 Linux。 如果没有在计算机上安装和运行操作系统,像 Web 浏览器或者字处理程序这样的应用程序就不能运行。硬件、操作系统、应用软件和用户之间的关系如图所示。
操作系统的主要任务有:
- 控制和监视系统的活动
- 配系统资源
- 调度操作
1.4 Java 语言规范、API、JDK 和IDE
Java 语言规范定义了 Java 的语法,Java 库则在 Java AP丨中定义。JDK 是用于开发和运行Java 程序的软件。IDE 是快速开发程序的集成开发环境。
Java 语言规范(Java language specification) 是对语言的技术定义,包括Java程序设计语言的语法和语义。完整的Java语言规范可以在 http://docs.oracle.com/javase/specs/ 上找到。
应用程序接口( Application Program Interface, API)也称为库,包括为开发Java程序而预定义的类和接口。API仍然在扩展,在网站 http://download.java.net/jdk8/docs/api/ 上, 可以査看和下载最新版的 Java API。
Java 是一个全面且功能强大的语言,可用于多种用途。
Java 有三个版本:
- Java 标准版(Java Standard Edition, Java SE) 可以用来开发客户端的应用程序。应用程序可以独立运行或作为 applet 在 Web浏览器中运行。
- Java 企业版( Java Enterprise Edition, Java EE) 可以用来开发服务器端的应用程序。例如,Java servlet 和 JavaServerPages (JSP),以及 JavaServer Faces (JSF )。
- Java 微型版(Java Micro Edition, Java ME)用来开发移动设备的应用程序,例如手机。
JDK 是由一套独立程序构成的集合,每个程序都是从命令行调用的,用于开发和测试 Java 程序。
1.5 — 个简单的 Java 程序
Java 是从类中的 main 方法开始执行的。
Welcome.java
public class Welcome {
public static void main(String[] args) {
// Display message Welcome to Java ! on the console
System.out.println("Weicome to Java!");
}
}
显示
Welcome to Java!
第 1 行定义了一个类。每个 Java 程序至少应该有一个类。每个类都有一个名宇。按照惯例,类名都是以大写字母开头的。本例中,类名(class name) 为 Welcome。
第 2 行定义主方法( main method)。程序是从 main 方法开始执行的。一个类可以包含几个方法。main 方法是程序开始执行的人口。
方法是包含语句的结构体。本程序中的 main 方法包括了 System.out.println 语句。该语句在控制台上打印消息 “ Welcome to Java!"(第 4 行)。字符串(string) 是一个编程术语,表示一个字符序列。一个字符串必须放人双引号中。Java 中的每条语句都以分号( ;)结束, 也称为语句结束符(statement terminator)。 保留字(reserved word) 或关键字(keyword) 对编译器而言都是有特定含义的,所以不能在程序中用于其他目的。例如,当编译器看到字 class 时,它知道 class 后面的字就是这个类的名字。这个程序中的其他保留字还有 Public、static 和 void。
第 3 行是注释(comment), 它标注该程序是干什么的,以及它是如何构建的。注释帮助程序员进行相互沟通以及理解程序。注释不是程序设计语句,所以编译器编译程序时是忽略注释的。在 Java 中,在单行上用两个斜杠(// )引导注释,称为行注释(line comment );在一行或多行用和 */ 括住注释,称为块注释(block comment)。当编译器看到 / / 时,就会忽略本行 // 之后的所有文本。当看到 / * 时,它会搜索接下来的 */,并忽略掉 /* 与 */ 之间 的文本。
程序中的一对花括号将程序的一些组成部分组合起来,形成一个块( block)。在 Java中,每个块以左花括号( 0 开始,以右花括号(})结束。每个类都有一个将该类的数据和方法放在一起的类块( class block)。每个方法都有一个将该方法中的语句放在一起的方法块(method block)。 块是可以嵌套的,即一个块可以放到另一个块内,如下面代码所示。
在这个程序中你可以注意到有些特殊的字符(比如,{}、//,« ), 它们几乎在每个程序中都会使用。下表总结了它们的用途。
1.5 程序设计风格和文档
- 正确的注释和注释风格
除了行注释(以 // 开始)和块注释(以 /* 开始)之外,Java 还支持一种称为 Java 文档 注释(javadoc comment)的特殊注释形式。javadoc 注释以 / * * 开始,以*/ 结尾。它们能使用JDK 的 javadoc 命令提取成一个 HTML文件。
- 正确的缩进和空白
保持一致的缩进风格会使程序更加清晰、易读、易于调试和维护。
- 块的风格
块是由花括号围起来的一组语句。块的写法有两种常用方式:次行(next - line) 风格和 行尾(end - of - line) 风格,如下所示
次行风格将括号垂直对齐,因而使程序容易阅读,而行尾风格更节省空间,并有助于避免犯一些细小的程序设计错误。
1.6 程序设计错误
程序设计错误可以分为三类:语法错误、运行时错误和逻辑错误。
- 语法错误
在编译过程中出现的错误称为语法错误( syntax error) 或编译错误(compile error)。语法错误是由创建代码时的错误引起的,例如:拼错关键字,忽略了一些必要的标点符号,或者左花括号没有对应的右花括号。
- 运行时错误
运行时错误( runtime error) 是引起程序非正常中断的错误。运行应用程序时,当环境检测到一个不可能执行的操作时,就会出现运行时错误。输入错误是典型的运行时错误。当程序等待用户输入一个值,而用户输人了一个程序不能处理的值时,就会发生输入错误。
- 逻辑错误
当程序没有按预期的方式执行时就会发生逻辑错误( logic error ):这种错误发生的原因有很多种。
常见错误
常见错误 1: 遗漏右括号
常见错误 2: 遗漏分号
常见错误 3: 遗漏引号
常见错误 4: 命名拼写错误
附录:
编译练习
运行结果