计算机是存储和处理数据的电子设备
计算机包括硬件 和软件 两部分。一般来说,硬件包括计算机中可以看得见的物理部分,而软件提供看不见的指令,这些指令控制硬件并且使得硬件完成特定的任务。
一台计算机是由以下几个主要的硬件组件构成:
中央处理器(CPU)
内存(主存)
存储设备(例如,磁盘和光盘)
输入设备(例如,鼠标和键盘)
输出设备(例如,显示器和打印机)
通信设备(例如,调制解调器和网卡)
中央处理器( Central Processing Unit, CPU) 是计算机的大脑。它从内存中获取指令,然后执行这些指令。CPU 通常由两部分组成:控制单元(control unit) 和算术 / 逻辑单元(arithmetic/logic unit)0 控制单元用于控制和协调其他组件的动作。算术 / 逻辑单元用于完成数值运算(加法、减法、乘法、除法)和逻辑运算(比较)。
计算机中字节(byte) 是最小的存储单元。每个字节由 8 个比特构成。
各种类型的数据(例如,数字和字符)都被编码为字节序列。编码模式是一系列的规
则,控制计算机将字符、数字和符号翻译成计算机可以实际工作的数据。大多数模式将每个字符翻译成预先确定的一个比特串。
计算机的内存由一个有序的字节序列组成,用于存储程序及程序需要的数据。
每个字节都有一个唯一的地址,使用这个地址确定字节的位置,以便于存
储和获取数据。因为可以按任意顺序存取字节,所以内存也被称为随机
访 问 存 播 器(Random-Access Memory, RAM)。
计算机的内存( RAM)是一种易失的数据保存形式:断电时存储在内存中的信息就会丢失。程序和数据被永久地存放在存储设备上,当计算机确实要使用它们时再移入内存,因为从内存读取比从存储设备读取要快得多。
存储设备主要有以下三种类型:
磁盘驱动器
光盘驱动器(CD 和 DVD)
USB 闪存驱动器
驱动器(drive) 是对存储介质进行操作的设备
1.磁盘
每台计算机至少有一个硬盘驱动器。硬盘(harddisk) 用于永久地存储数据和程序。
2.光盘和数字化视频磁盘
CD 的全称是致密的盘片(compact disc)。光盘驱动器的类型有两种:只读光盘(CD-R)和可读写光盘(CD-RW),只读光盘上的信息只能用于读取,内容一旦记录到光盘上,用户是不能修改它们的。
DVD 的全称是数字化多功能碟片或者是数字化视频磁盘。一张 DVD 上可以保存的信息要比一张 CD 上可以保存的信息多。
3.USB闪存驱动器
USB 闪存驱动器(flash drive)是用于存储和传输数据的设备。闪存驱动器很小大
约就是一包口香糖的大小。
输入设备和输出设备让用户可以和计算机进行通信。最常用的输人设备是键盘
(keyboard) 和氣标(mouse), 而最常用的输出设备是显示器(monitor) 和打印机(printer)。
计算机可以通过通信设备进行联网,例如,拨号调制解调器(modulator/demodulator,调制器 / 解调器 )、DSL、电缆调制解调器、有线网络接口卡,或者无线适配器。
拨号调制解调器使用的是电话线,传输数据的速度可以高达 56 000bps ( bps 表示每秒比特)。
DSL ( Digital Subscriber Line, 數字用户线)使用的也是标准电话线,但是传输数据的速度比标准拨号调制解调器快 20倍。
电纜调制解调器利用电缆公司维护的有线电视电缆进行数据传输,通常速度比 DSL快。网络接口卡(NIC)是将计算机接入局域网(LAN)的设备。局域网通常用于大学、商业组织和政府组织。一种称为 1000BaseT 的高速 NIC 能够以每秒 1000Mbps(Mbps表示每秒百万比特)的速度传输数据。
无线网络现在在家庭、商业和学校中极其流行。现在,每台笔记本电脑都配有无线适配器,计算机可以通过无线适配器连接到局域网和 Internet 上。
汇编语言(assembly language) 使用短的描述性单词(称为助记符)来表示每一条机器语言指令。
用高级语言编写的程序称为源程序( source program) 或源代码( source code)。由于计算机不能运行源程序,源程序必须被翻译成可执行的机器代码。翻译可以由另外一种称为解释器或者编译器的编程工具来完成。
操作系统(Operating System, OS)是运行在计算机上的最重要的程序,它可以管理和控制计算机的活动。
1.控制和监视系统的活动
操作系统执行基本的任务,操作系统还要确保不同的程序和用户同时使用计算机时不会相互干扰。另外,操作系统还负责安全处理,以确保未经授权的用户和程序无权访问系统。
2.分配和调配系统资源
操作系统负责确定一个程序需要使用哪些计算机资源(例如,CPU、内存、磁盘、输人和输出设备),并进行资源分配和调配以运行程序。
3.调度系统
操作系统负责调度程序的活动,以便有效地利用系统资源。
多道程序设计允许多个程序通过共享 CPU 同时运行。CPU 的速度比其他组件快得多,这样,多数时间它都处于空闲状态。多道程序设计操作系统利用这一特点,允许多个程序同时使用CPU,— 旦CPU 空闲就让别的程序使用它。
多线程允许单个程序同时执行多个任务。例如,字处理程序允许用户在编辑文本的同时,将其保存到文件。
多处理也称为并行处理(parallel processing), 是指使用两个或多个处理器共同并行执行子任务,然后将子任务的结果合并以得到整个任务的结果。
Java 是一种功能强大和多用途的编程语言,可用于开发运行在移动设备、台式计算机以及服务器端的软件。
Java 是功能完善的通用程序设计语言,可以用来开发健壮的任务关键的应用程序。现在,它不仅用于 Web 程序设计,而且用于在服务器、台式计算机和移动设备上开发跨平台的独立应用程序。
万维网( World Wide Web, WWW)是从世界上任何地方的 Internet 都可以访问的电子信息宝库。
Java 是一个功能强大的程序设计语言,可以用它来开发台式计算机、 服务器以及小的手持设备上的应用程序。
每个 Java 程序至少应该有一个类。每个类都有一个名宇。按照惯例,类名都是以大写字母开头的。
程序是从 main 方法开始执行的。一个类可以包含几个方法。main 方法是程序开始执的人口。在程序中用于其他目的。
Java 淥程序是区分大小写的。如果在程序中将 main 替换成 Main, 就会出错。
在执行程序之前,必须创建程序并进行编译。这个过程是反复执行的,如果程序有编译错误,必须修改程序来纠正错误,然后重新编译它。如果程序有运行时错误或者不能产生正确的结果,必须修改这个程序,重新编译,然后重新执行。
可以使用任何一个文本编辑器或者集成开发环境来创建和编辑 Java 源代码文件。
1.语法错误
在编译过程中出现的错误称为语法错误( syntax error) 或编译媒误(compile error)。语法错误是由创建代码时的错误引起的。
2.运行时错误
运行时错误( runtime error) 是引起程序非正常中断的错误。运行应用程序时,当环境检测到一个不可能执行的操作时,就会出现运行时错误。
3.逻辑错误
当程序没有按预期的方式执行时就会发生逻辑错误( logic error )。
常见错误 1: 遗漏右括号
括号用来标识程序中的块。每个左括号必须有一个右括号匹配。
常见错误 2: 遗漏分号
每个语句都以一个语句结束符( ;)结束。
常见错误 3: 遗漏引号
字符串必须放在引号中。
常见错误 4: 命名拼写错误
Java 是大小写敏感的。编程人门者常将名称拼写错误。
1.创建 Java 工程
创建 Java 程序前,首先需要创建一个工程。工程类似于一个文件夹,用于包含 Java 程序以及所有的支持文件。你只需要创建工程一次。这里是创建 Java 工程的步骤:
1 ) 选择 File New Project 来显示 New Project 对话框。
2 )在 Categories 部分选择 Java, Projects 部分选择 Java Application, 然后单击 Next 来
显示 New Java Application 对话框。
3 ) 在 Project Name 域中输入 demo, 在 Project Location 域中输入 c:\michael。去掉 Use Dedicated Folder for Storing Libraries 的勾选,并且去掉 Create Main Class 的勾选。
4 )单击 Finish 来创建工程。
2.创建 Java 类
工程创建后,可以采用以下步骤在工程中创建 Java 程序:
1 )右键单击工程面板的 demo 节点,显示一个上下文菜单。
2 ) 在 Class Name 域输人 Welcome , 在 Location 域中选择 Source Packages。
3 ) 单击 Finish 来创建 Welcome 类。
编写程序涉及如何设计算法以及如何将算法翻译成程序指令,即代码。算法描述的是:
如果要解决问题,所需要执行的动作以及这些动作执行的顺序。算法可以帮助程序员在使用程序设计语言编写程序之前做一个规划。算法可以用自然语言或者伪代码(即自然语言和程序设计代码混在一起使用)描述。
每一个 Java 应用程序都必须有一个 main 方法
变量名应该尽量选择描述性的名字
Java 提供简单数据类型来表示整数、实数、字符以及布尔类型。这些类型称为原始数据类型或基本类型。
实数(即带小数点的数字)在计算机中使用一种浮点的方法来表示。因此,实数也称为浮点数。Java 中,可以使用关键字 double 来声明一个浮点变量。
每个变量都有名字、类型、大小和值
加号(+) 有两种意义:一种用途是做加法,另一种用途是做字符串的连接(合并)。第13 14 行中的加号(+)称为字符串连接符。它把两个字符串合并为一个。如果一个字符串和一个数值连接,数值将转化为字符串然后再和另外一个字符串连接。
在源代码中,字符串常量不能跨行。
从控制台读取输入,使得程序可以从用户那里获得输入。
Java 并不直接支持控制台输人,但是可以使用 Scanner 类创建它的对象,以读取来自 System.in 的输入
语法 new Scanner (System.in)表明创建了一个 Scanner 类型的对象。语法 Scanner input 声明input 是一个Scanner 类 型 的 变 童。整 行 的 Scanner input-new Scanner(System 彳n)表明创建了一个 Scanner 对象,并且将它的引用值陚值给变量 input。
除非要在程序中使用某个类,否则关于被导人包中的这些类的信息在编译时或运行时是不被读入的。导人语句只是告诉编译器在什么地方能找到这些类。声明明确导人和声明通配符导人在性能上是没有什么差别的。
如果输入了一个非数值的值,一个运行时错误将产生。
标识符是为了标识程序中诸如类、方法和变量的元素而采用的命名。
所有的标识符必须遵从以下规则:
标识符是由字母、数字、 下划线(-) 和美元符号( ) 构 成 的 字 符 序 列 。 标 识 符 必 须 以 字 母 、 下 划 线 ( ) 或 美 元 符 号 ( ) 构成的字符序列。 标识符必须以字母、下划线(_)或美元符号( )构成的字符序列。标识符必须以字母、下划线()或美元符号()开头,不能以数字开头。
标识符不能是保留字(参见附录 A 中的保留字列表)。
标识符不能是 true、false 或 null。
标识符可以为任意长度。
由于 Java 是区分大小写的,所以 area、Area 和 AREA 都是不同的标识符
标识符是用于命名程序中的变量、方法、类和其他项。具有描述性的标识符可提高程序的可读性。避免采用缩写作为标识符,使用完整的词汇会更具有描述性。
变量用于表示在程序中可能被改变的值。
变量用于表示特定类型的数据。为了使用变量,可以通过告诉编译器变量的名字及其可以存储的数据类型来声明该变量a 变量声明告知编译器根据数据类型为变量分配合适的内存空间。
如果几个变量为同一类型,允许一起声明它们
变董之间用逗号分隔开
变量通常都有初始值。可以一步完成变M的声明和初始化
也可以使用简捷的方式来同时声明和初始化同一类型的变量
在賦值给变量之前,必须声明变量。方法中声明的变量在使用之前必须被斌值。任何时候,都要尽可能一步完成变量的声明和斌初值。这会使得程序易读,同时避免程序设计错误
賦值语句将一个值指定给一个变量。在 Java 中賦值语句可以作为一个表达式。声明变量之后,可以使用域值语句(assignment statement) 给它陚一个值。在 Java 中,将等号(-)作为赋值操作符(assignment operator)。
表达式(expression) 表示涉及值、变量和操作符的一个运算,它们组合在一起计算出一个新值。
变量也可用在表达式中。变量也可以用于 = 操作符的两边
在这个賦值语句中,X+1的结果陚值给 X。假设在语句执行前 X 为 1,那么语句执行后它就变成了 2。
要给一个变量陚值,变量名必须在賦值操作符的左边。
在 Java 中,陚值语句本质上就是计算出一个值并将它賦给操作符左边变量的一个表达
式。由于这个原因,賦值语句常常称作賦值表达式
命名常量是一个代表不变值的标识符
— 个变量的值在程序执行过程中可能会发生变化,但是命名常量(named constant) 或简称常量,则表示从不改变的永久数据
常量必须在同一条语句中声明和赋值
使用常量有三个好处:1)不必重复输入同一个值;2 ) 如果必须修改常量值(例如,将
PI的值从 3.14 改为 3.14159),只需在源代码中的一个地方做改动;3 ) 给常量赋一个描述性名字会提高程序易读性。
严格遵循 Java 的命名习惯可以让你的程序易于理解,以及避免错误
应该确保程序中为变量、 常量、类和方法所选择的描述性名字是直观易懂的。如前所述,命名是区分大小写的。下面列出变量、常量、方法和类的命名习惯:
使用小写字母命名变量和方法。如果一个名字包含多个单词,就将它们连在一起第一个单词的字母小写,而后面的每个单词的首字母大写,例如,变量 radius 和area 以及方法 print。
类名中的每个单词的首字母大写,例如,类名 ComputeArea 和 System。
大写常量中的所有字母,两个单词间用下划线连接,例如,常童 PI 和常量 MAX_VALUE
一.数值类型
每个数据类型都有它的取值范围。编译器会根据每个变量或常量的数据类型为其分配内存空间。Java 为数值、字符值和布尔值数据提供了八种基本数据类型。
Java 使用四种类型的整数:byte、short、int 和 long。应该为变量选择最适合的数据类型。
Java 使用两种类型的浮点数:float 和 double。double 型是 float 型的两倍。所以,double 型又称为双精度 (double precision), 而 float 称为单精度 ( single precision)。
二.数值操作符
操作符 %, 被称为求余或者取模操作符,可以求得除法的余数。左边的操作数是被除数右边的操作数是除数。
操作符 + 和 -可以是一元的也可以是二元的。一元操作符仅有一个操作数;而二元操作
符有两个操作数。
三.幂运算
使用方法 Math.pow(a,b)来计算 ab。pow 方法定义在 Java API的 Math 类中。运用语法Math.pow(a.b)可以调用(比如,Math.pow(2,3)。
一.整形直接量
只要整型直接量与整型变量相匹配,就可以将整型直接量陚值给该整型变量。如果直接量太大,超出该变量的存储范围,就会出现编译错误。
默认情况下,整型直接量是一个十进制整数。要表示一个二进制整数直接量,使用Ob 或者 0B (零 B) 开头;表示一个八进制整數直接量,就用 0 (零)开头,而要表示一个十六进制整数直接量,就用 Ox 或 0X (零 x) 开头。
二.浮点型直接量
浮点型直接量带小数点,默认情况下是 double 型的
可以通过在数字后面加字母 f 或 F 表示该数为 float 型直接量,也可以在数字后面加 d 或 D 表示该数为 double 型直接量。
用 Java 编写数值表达式就是使用 Java 操作符对算术表达式进行直接的翻译。
首先执行的是包括在圆括号里的运算。圆括号可以嵌套,嵌套时先计算内层括号。当一个表达式中有多于一个操作符时,以下操作符的优先级规则用于确定计算的次序:
乘法、除法和求余运算首先计算。如果表达式中包含若干个乘法、除法和求余操作符,可按照从左到右的顺序执行。
最后执行加法和减法运算。如果表达式中包含若干个加法和减法操作符,则按照从左到右的顺序执行。
可以通过调用 System.currentTimeMillisO 返回当前时间。
System类中的方法 currentTimeMillis 返回从 GMT 1970 年 1 月 1 日 00:00:00 开始到当前时刻的毫秒数
可以使用这个方法获取当前时间,然后按照如下步骤计算出当前的秒数、分钟数和小时数:
1 ) 调用 System.currentTimeMillisO 方法获取 1970 年丨月 1 日午夜到现在的毫秒数(例如:1203183086328 毫秒),并存放在变童 totalMilliseconds 中。
2 ) 通过将总毫秒数totalMilliseconds 除以 1000 得到总秒数 totalSeconds (例如:120B183086328 毫秒 /1000=1203183068 秒)。
3 ) 通过 totalSecondsX60 得到当前的秒数(例如:lMSlHO68 秒%60=8,这个值就是当前秒数)。
4 ) 通过将 totalSeconds 除以 M得到总的分钟数 totalMinutes (例如:lWU83。68秒 /60=20053051分钟)。
5 ) 通过 totalMinutesX60 得到当前分钟数(例如:20053051分钟%60=31, 这个值就是当前分钟数)。
6 ) 通过将总分钟数 totalMinutes 除以 60 获得总的小时数 totalHours (例如:MOSSOSl分钟 /60=334217 小时)。
7 ) 通过 t0talH0UrSX24 得到当前的小时数(例如:33«17 小时%24=17, 该值就是当前小时数)
操作符 +、-、*、/、x 可以结合賦值操作符形成增强操作符。
经常会出现变量的当前值被使用、修改,然后再重新賦值给该变量的情况。
Java 允许使用增强陚值操作符来结合賦值和加法操作符的功能.
++ 和 --是对变量进行自增1和自减 1的简写操作符。由于这是许多编程任务中经常需要改变的值,所以这两个操作符使用起来很方便。
使用自增操作符和自减操作符可以使表达式更加简短,但也会使它们比较复杂且难以读懂。应该避免在同一个表达式中使用这些操作符修改多个变量或多次修改同一个变量
将一个小范围类型的变量转换为大范围类型的变量称为拓宽类型( widening a type ), 大范围类型的变量转换为小范围类型的变量称为缩窄类型( narrowing a type)。Java 将动拓宽一个类型,但是,缩窄类型必须显式完成。
如果要将一个值賦给一个范围较小类型的变量,例如:将 double 型的值賦给 int型变量,就必须进行类型转换。如果在这种情况下没有使用类型转换,就会出现编译错误c 使用类型转換时必须小心,去失的信息也许会导致不精确的结果
软件开发生命周期是一个多阶段的过程,包括需求规范、分析、设计、实现、测试、部署和维护。
需求规范是一个规范化的过程,旨在理解软件要处理的问题,以及将软件系统需要做的详细记录到文档中。这个阶段涉及用户和开发者之间紧密的接触。
系统分析旨在分析数据流,并且确定系统的输人和输出。当进行分析的时候,首先确定输出,然后弄清楚需要什么样子的输入从而产生结果是有帮助的。
系统设计是设计一个从输人获得输出的过程。这个阶段涉及使用多层的抽象,将问题分为可管理的组成部分,并且设计执行每个组成部分的策略。可以将每个组成部分看作一个执行系统特定功能的子系统。系统分析和设计的本质是输入、处理和输出(IPO)。
实现是将系统设计翻译成程序。为每个组成部分编写独立的程序,然后集成在一起工作。这个过程需要使用一门编程语言,比如 Java。实现包括编码、自我测试,以及调试(即,在代码中寻找错误,称为调试)
測试确保代码符合需求规范,并且排除错误。通常由一个没有参与产品设计和实现的独立软件工程团队完成这样的测试。
部署使得软件可以被使用。按照软件类型的不同,可能被安装到每个用户的机器上,或者安装在一个 Internet 可访问的服务器上。
维护是对软件产品进行更新和改进。软件产品必须在一直演化的环境中连续运行和改进。这要求产品的周期性改进,以修正新发现的错误,并且将更改集成到产品中。
常见错误 1: 未声明、未初始化的变置和未使用的变量
变量必须在使用之前声明为一个类型并且賦值。一个常见的错误是没有声明变量或者初始化一个变量。
常见错误 2: 整数溢出
数字以有限的位数存储。当一个变量被陚予一个过大(以存储大小而言)的值,以至无法存储该值,这称为溢出。
常见错误 3: 取整错误
一个取整错误,也称为凑整错误,是在计算得到的数字的近似值和确切的算术值之间的不同。
常见错误 4: 超出预期的整数除法
Java 使用同样的除法操作符来执行整数和浮点数的除法。当两个操作数是整数时,/ 操符执行一个整数除法,操作的结果是整数,小数部分被截去。要强制两个整数执行一个浮点数除法时,将其中一个整数转换为浮点数值。
常见陷阱:冗余的输入对象
编程新手经常为每个输入编写代码创建多个输入对象。