第三章 java 编程与实例

44
第第第 Java 第第第第第 本本本本本本 §JAVA 本本本本 §JAVA 本本本本 §JAVA 本本本本本本本本 §本本本本 §JAVA 本本 §JAVA 本本本本本本本本 §JAVA 本本本本本本 §本本本本 §本本本本本本本本 §Java 本本本 / 本本本

Upload: iago

Post on 23-Jan-2016

128 views

Category:

Documents


0 download

DESCRIPTION

第三章 Java 编程与实例. 本章要内容有 JAVA 程序结构 JAVA 编程惯例 JAVA 关键字与数据类型 类型转换 JAVA 数组 JAVA 表达式和流程控制 JAVA 面向对象技术 例外处理 线程的状态与构造 Java 的输入 / 输出流. 3.1 Java 编程结构. 1. 程序设计的基本结构 Java 语言的源程序代码由一个或多个编译单元( compilation unit )组成,每个编译单元只能包含以下三部分的内容: 包声明语句( package statement ); 包引入语句( import statement ); - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第三章 Java 编程与实例

第三章 Java 编程与实例本章要内容有§JAVA 程序结构§JAVA 编程惯例§JAVA 关键字与数据类型§类型转换§JAVA 数组§JAVA 表达式和流程控制§JAVA 面向对象技术§例外处理§线程的状态与构造§Java 的输入 / 输出流

Page 2: 第三章 Java 编程与实例

3.1 Java 编程结构 1. 程序设计的基本结构§ Java 语言的源程序代码由一个或多个编译单元( compilation unit )组成,每个编译单元只能包含以下三部分的内容:

§ 包声明语句( package statement );§ 包引入语句( import statement );§ 类声明语句( class declarations )或接口实现语句( interface implementation )。

Page 3: 第三章 Java 编程与实例

3.1 Java 编程结构

2 . Java 编程的语法规范§ Java 源文件:每个 java 源文件仅包含一

个公共类或接口。§ 缩进:应该以 4 个空格为一个缩进单位。§ 行长:一行不应多于 80 个字符。§ 折行:在逗号后断开;在操作符之前断

开;高层级断开优先于低层级断开;后面的行和前面的行左对齐等等。

Page 4: 第三章 Java 编程与实例

3.1 Java 编程结构§ 注释: Java 程序有两种注释,实现注释和文档注释。实现注释的定界符是 /*...*/ 和 // 。文档注释是 Java 仅有的,定界符是 /**...*/ ,用于产生 javadoc 。

§ 标识符的命名规范: § 控制结构: § 间隔:

Page 5: 第三章 Java 编程与实例

3.1 Java 编程结构

3. Java 关键字 Java 关键字和保留字

Java 语言中的这些关键字和保留字都是大小写敏感的。

abstract const final instanceof private switch void

boolean continue finally int protected synchronized voiatile

break default float interface public this while

byte do for long return throw

case double goto native short throws

catch else if new static transient

char extends implements null strictfp true

class false import package super try

Page 6: 第三章 Java 编程与实例

3.1 Java 编程结构4 . Java 数据类型 § 布尔类型 布尔类型 (boolean) 只有两个值: true 和 false

§ 字符类型 单个字符通常被表示为字符类型 (char)

Java 语言使用 16 位无符号整数来表示一个字符,范围是 0~65535 。

Page 7: 第三章 Java 编程与实例

3.1 Java 编程结构 特殊字符

换码序列 名称 Unicode值

\b 退格 \u0008

\t Tab(制表) \u0009

\n 换行 \u000a

\r 硬回车 \u000d

\” 双引号 \u0022

\’ 单引号 \u0027

\\ 反斜杠 \u005c

Page 8: 第三章 Java 编程与实例

3.1 Java 编程结构

§整数类型 整数类型是指那些没有小数部分的数字,负数是不允许的。 Java 提供了四种整数类型

Java 整数类型表类型 存储空间大小 最小值 最大值byte 8 bits -27 27-1

short 16 bits -215 215-1

int 32 bits -231 231-1

long 64 bits -263 263-1

Page 9: 第三章 Java 编程与实例

3.1 Java 编程结构

§浮点类型 浮点类型是指那些含有小数部分的数字,共有两种浮点类型: float 和 double 。

浮点类型表 数据类型 存储空间大小

float 32 bits

double 64 bits

Page 10: 第三章 Java 编程与实例

3.1 Java 编程结构

5. 字符串 § Java 没有提供内建的字符串类型,标准 Java 库中包含了一个预定以类,称作 String 。每个用双引号封闭的字符串都是 String 类的一个实例。

§ 例如:§ String s=”This is a string.”;§ String greeting=”Hello!”;§ String e=””; // 一个空字符串

Page 11: 第三章 Java 编程与实例

3.1 Java 编程结构

6. 变量的声明和初始化 每个变量在使用以前都需要声明它的数据类型并初始化该变量。

Java 有两种类型的变量,一种是使用原始数据类型的变量,如 int 、 float等,另一种是使用类类型的变量,如 String 。

Page 12: 第三章 Java 编程与实例

3.1 Java 编程结构 如果有多个类型相同的变量需要声明,还可以在同一行中进行多项声明。例如:§int i,j,k; //i 、 j 、 k 三者均为 int 类型 声明了一个变量后,系统会自动给变量一个默认的初始值

变量的类型及初值 变量类型 初值 变量类型 初值

byte 0 short 0

int 0 long 0L

float 0.0f double 0.0d

char ‘\u0000’ boolean false

object reference null

Page 13: 第三章 Java 编程与实例

3.1 Java 编程结构 也可以根据程序的需要对变量进行明确的初始化,即给该变量赋一个初值。赋值是通过“ =” 实现的,“ =” 左边是需要初始化的变量,右边是 Java 表达式。

例如:§ int anIntegerVariable; // 声明一个 int 型变量§ anIntegerVariable=56; // 初始化该变量§ char ch; // 声明一个 char 型变量§ ch=’C’; // 初始化该变量§ String s; // 声明一个字符串变量§ s=”This is a string.”; // 初始化该字符串变量

Page 14: 第三章 Java 编程与实例

3.1 Java 编程结构

7. 类型转换§ Java 语言不支持变量类型之间的任意转换。§ 允许的转换包括: byte->short->int->long->float->double 以及

char->int 。 如果不进行强制类型转换,只能按照箭头的方向转换

Page 15: 第三章 Java 编程与实例

3.1 Java 编程结构8. 数组 数组是一种最简单的复合数据类型,特点是其中的元素都具有相同的数据类型,要创建和使用一个数组,必须包含三部分的内容,即 :

声明、创建和初始化。 § 声明一个数组要先确定数组元素的数据类型,并在后面加上数组名。

例如:int a[]; //C 语言风格,声明一个整数数组char ch[]; // C 语言风格,声明一个字符数组Point[] p; //Java 语言风格,声明一个 Point 型数组

double[] d; //Java 语言风格,声明一个 double 型数 组

Page 16: 第三章 Java 编程与实例

3.1 Java 编程结构§ 创建一个数组要使用 new 关键字。a=new int[20]; // 创建一个包含 20 个 int 型数

据的数组ch=new ch[50];// 创建一个包含 50 个字符型 数据的数组§ Java 语言还提供了一种将数组的声明、创建和初始化同时完成的方法。例如:

float [] diameters={1.1f,2.2f,3.3f,4.4f,5.5f};

Page 17: 第三章 Java 编程与实例

3.2 表达式和流程控制1. 表达式

Java 中的运算符(优先级由高到低排列) 分类 运算符

一元运算符 ++ -- + - ! ~ ()

算术运算符* / %

+ -

位移运算符 << >> >>>

比较运算符< <= > >= instanceof

== !=

按位运算符 & ^ |

短路运算符 && ||

条件运算符 ?:

赋值运算符 = “op=”

Page 18: 第三章 Java 编程与实例

3.2 表达式和流程控制

2. 流程控制§ 条件语句 条件语句包括 if-else 语句和 switch 语句。

if-else 语句用于对单个条件的判定,可以嵌套使用;

switch 语句用于多重选择,但是只能对char 型和除 long 以外的整数类型进行测试。

Page 19: 第三章 Java 编程与实例

3.2 表达式和流程控制§ 循环语句 循环语句的作用是反复执行一段代码,直到满足终止循环的条件为止。 Java 语言提供了两种循环:不确定循环和确定循环。

不确定循环就是不知道循环体要被重复执行多少次的情况下使用的一种循环语句。不确定循环有 while 循环和 do-while 循环。

确定循环就是明确知道循环体应该重复执行的次数,并能够在程序中严格控制的一种循环语句。确定循环有 for 循环。

Page 20: 第三章 Java 编程与实例

3.3 Java 面向对象程序设计技术§ Java 是一种完全面向对象的语言。 § 面向对象程序设计有两大特点: 抽象数据类型的概念和继承机制。§ 使用面向对象技术进行程序开发的好处有两点:

一是使用面向对象技术编写的类减少了编写整个程序和调试所需要的时间;

另一点是编写好的代码可以在不同的环境下重用。

Page 21: 第三章 Java 编程与实例

3.3 Java 面向对象程序设计技术

1. 对象、类和方法 对象就是变量和相关的方法的集合,其中变量表明对象的状态 ;

方法表明对象所具有的行为。 当多个对象具有一些共性时,可以将这些共性抽象出来,这就是类。

Page 22: 第三章 Java 编程与实例

3.3 Java 面向对象程序设计技术

2. 继承 继承是面向对象程序设计的一个重要机制。

Java 不支持多重继承。 继承可以实现代码的复用,使程序的复杂度降低。

在继承机制中还有两个比较特殊的类,即 final 类和 abstract 类。

Page 23: 第三章 Java 编程与实例

3.3 Java 面向对象程序设计技术

3. 方法的重载和重写 方法重载指的是在一个类中可以有多个具有相同名字的方法 ;

方法重写指的是子类可以重新实现父类的某些方法 。

Page 24: 第三章 Java 编程与实例

3.3 Java 面向对象程序设计技术方法重载和方法重写主要有以下四点不同 :§ 重载的方法互相补充; 重写的方法往往会隐藏原方法。§ 重载的方法可以在一个类中以任何数量存在;父类中的每一个方法只能在子类中被重写一次。

§ 重载的方法在参数列表上与原方法不同; 重写的方法在参数类型和参数顺序上必须

与原方法相同。§ 重载的方法的返回类型可以自由选择; 重写的方法的返回类型必须与原方法相同。

Page 25: 第三章 Java 编程与实例

3.3 Java 面向对象程序设计技术

4. 包封装 Java 提供包来管理类名空间。包是对类和其他包的封装,它实际上提供了一种命名机制和可见性限制机制。

5. 访问权限 在 Java 中,对类的实例变量和实例方法都有访问权限的控制。

Page 26: 第三章 Java 编程与实例

3.3 Java 面向对象程序设计技术

不同范围中的访问权限

同一个类中

同一个包中

不同包中的子类

不同包中的非子类

private √

protected

√ √ √

public √ √ √ √

friendly √ √

Page 27: 第三章 Java 编程与实例

3.3 Java 面向对象程序设计技术

6. 接口§ 接口就是方法定义和常量值的集合。§ 接口中的实例方法一般被定义为 public 或 abstract

Page 28: 第三章 Java 编程与实例

3.4 例外处理

1. 例外处理的类层次 § Java 中例外类的最顶层是 Throwable 类,所有的异常事件都是它的后代。

§ Java 语言中的异常事件分为两大类: Exception 类和 Error 类。

Page 29: 第三章 Java 编程与实例

3.4 例外处理

2. 例外处理的两种方法 对于非运行时例外必须捕获或声明,而对运行时例外,可以交给 Java运行时系统来处理。

使用 try-catch-finally 语句捕获例外 使用 throws 子句声明例外

Page 30: 第三章 Java 编程与实例

3.4 例外处理

3. 定义自己的例外类 我们也可以用继承的方法定义自己的例外类。对于自定义的例外类,通常把它作为 Exception 类的子类

Page 31: 第三章 Java 编程与实例

3.5 线程 程序中单个顺序的流控制称为线程。多线程就是在单个程序中可以同时运行多个不同的任务。

1. 线程的状态 一个线程有四种状态:§ 准备状态( Ready )§ 运行状态( Running ) § 等待状态( Waiting ) § 死亡状态( Dead )

Page 32: 第三章 Java 编程与实例

3.5 线程2. 线程体的构造 构造线程体就是要构造满足线程功能要求的 run() 方法。 run() 方法的实现有两种方法

继承 Thread 类构造线程体 实现 Runnable 接口构造线程体 两种创建线程体的方法核心内容都是要重写 run() 方法,不同点即 run()方法的位置不同。

Page 33: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流

可从中读出一系列字节的对象称为“输入流”( Input Stream );

而能向其中写入一系列字节的对象则称为“输出流”( Output Stream )。

Page 34: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流

1. 输入 / 输出流的常用方法 输入流( 1 ) int read() 、 int read(buye[]) 、 int rea

d(byte[],int,int)

( 2 ) void close()

( 3 ) int available()

( 4 ) skip(long)

( 5 ) mardSupported() 、 mark(int) 、 reset()

Page 35: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流

输出流( 1 ) write(int) 、 write(byte[]) 、 write

(byte[],int,int)

( 2 ) close()

( 3 ) flush()

Page 36: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流2. 输入 / 输出的类层次

InputStream

SequenceInputStream

PipedInputStream ByteArrayInputStream

FileInputStream

FilterInputStream StringBufferInputStream

DataInputStream

PushbackInputStream

LineNumberInputStream

BufferedInputStream

Page 37: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流§ FileInputStream 和 FileOutputStream

§ BufferedInputStream 和 BufferedOutputStream

§ DataInputStream 和 DataOutputStream

§ PipedInputStream 和 PipedOutputStream

§ InputStreamReader 和 InputStreamWriter

§ BufferedReader 和 BufferedWriter

Page 38: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流Reader 的类层次

Reader

BufferedReader

StringReader

InputStreamReader

CharArrayReader PipedReader

FilterReader

Page 39: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流3. 文件 § 文件对象的创建( 1 ) File myFile; myFile=new File(“myfile”);//当前目录下的 myfile文件( 2 ) myFile=new File(“/mydocs”,”myfile”);//my

docs目录下的 myfile文件( 3 ) File myDir=new File(“/mydocs”); myFile=new File(myDir,”myFile”);// 结果与第二 种构造方法类似

Page 40: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流

§ 文件测试的一些方法 ( 1 )文件名信息String getName() :获取文件名String getPath() :获取文件路径String getAbsolutePath() :获取文件的绝对路径String getParent() :获取由当前对象所表示文件的父目录

boolean renameTo(File newName) :将当前对象更名为参数所制定的文件名

Page 41: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流( 2 )文件测试boolean exists() :检测本文件是否存在boolean canWrite() :判断是否可以向指定文件中 写入数据boolean canRead() :判断是否可以从指定文件中 读取数据boolean isFile() :检测本对象是否代表一个文件boolean isdirectory() : 检测本对象是否代表一个 目录boolean isAbsolute() :检测被对象是否代表一个 绝对路径名

Page 42: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流

( 3 )文件信息和实用工具long lastModified() :检测当前 File 对象所对应的文件最后一次被修改的时间

long length() :检测文件长度boolean delete() :删除当前 File 对象所对应的文件

Page 43: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流

( 4 )目录实用工具boolean mkdir() :建立一个目录,其路径名由当前 File 对象指定

String[] list() :列出当前 File 对象所指定目录中的文件

Page 44: 第三章 Java 编程与实例

3.6 Java 的输入 / 输出流

§ 随机文件的存取 Java 语言提供了一个 RandomAccessFil

e 类,来实现随机文件的存取。