440 likes | 796 Views
第三章 Java 编程与实例. 本章要内容有 JAVA 程序结构 JAVA 编程惯例 JAVA 关键字与数据类型 类型转换 JAVA 数组 JAVA 表达式和流程控制 JAVA 面向对象技术 例外处理 线程的状态与构造 Java 的输入 / 输出流. 3.1 Java 编程结构. 1. 程序设计的基本结构 Java 语言的源程序代码由一个或多个编译单元( compilation unit )组成,每个编译单元只能包含以下三部分的内容: 包声明语句( package statement ); 包引入语句( import statement );
E N D
第三章 Java编程与实例 本章要内容有 JAVA程序结构 JAVA编程惯例 JAVA关键字与数据类型 类型转换 JAVA数组 JAVA表达式和流程控制 JAVA面向对象技术 例外处理 线程的状态与构造 Java的输入/输出流
3.1 Java编程结构 1. 程序设计的基本结构 • Java语言的源程序代码由一个或多个编译单元(compilation unit)组成,每个编译单元只能包含以下三部分的内容: • 包声明语句(package statement); • 包引入语句(import statement); • 类声明语句(class declarations)或接口实现语句(interface implementation)。
3.1 Java编程结构 2 . Java编程的语法规范 • Java源文件:每个java源文件仅包含一个公共类或接口。 • 缩进:应该以4个空格为一个缩进单位。 • 行长:一行不应多于80个字符。 • 折行:在逗号后断开;在操作符之前断开;高层级断开优先于低层级断开;后面的行和前面的行左对齐等等。
3.1 Java编程结构 • 注释:Java程序有两种注释,实现注释和文档注释。实现注释的定界符是 /*...*/ 和 //。文档注释是Java仅有的,定界符是 /**...*/,用于产生javadoc。 • 标识符的命名规范: • 控制结构: • 间隔:
3.1 Java编程结构 3. Java关键字 Java关键字和保留字 Java语言中的这些关键字和保留字都是大小写敏感的。
3.1 Java编程结构 4 . Java数据类型 • 布尔类型 布尔类型(boolean)只有两个值: true和false • 字符类型 单个字符通常被表示为字符类型(char) Java语言使用16位无符号整数来表示一个字符,范围是0~65535。
3.1 Java编程结构 特殊字符
3.1 Java编程结构 • 整数类型 整数类型是指那些没有小数部分的数字,负数是不允许的。Java提供了四种整数类型 Java整数类型表
3.1 Java编程结构 • 浮点类型 浮点类型是指那些含有小数部分的数字,共有两种浮点类型:float和double。 浮点类型表
3.1 Java编程结构 5. 字符串 • Java没有提供内建的字符串类型,标准Java库中包含了一个预定以类,称作String。每个用双引号封闭的字符串都是String类的一个实例。 • 例如: • String s=”This is a string.”; • String greeting=”Hello!”; • String e=””; //一个空字符串
3.1 Java编程结构 6. 变量的声明和初始化 每个变量在使用以前都需要声明它的数据类型并初始化该变量。 Java有两种类型的变量,一种是使用原始数据类型的变量,如int、float等,另一种是使用类类型的变量,如String。
3.1 Java编程结构 如果有多个类型相同的变量需要声明,还可以在同一行中进行多项声明。例如: • int i,j,k; //i、j、k三者均为int类型 声明了一个变量后,系统会自动给变量一个默认的初始值 变量的类型及初值
3.1 Java编程结构 也可以根据程序的需要对变量进行明确的初始化,即给该变量赋一个初值。赋值是通过“=”实现的,“=”左边是需要初始化的变量,右边是Java表达式。 例如: • int anIntegerVariable; //声明一个int型变量 • anIntegerVariable=56; //初始化该变量 • char ch; //声明一个char型变量 • ch=’C’; //初始化该变量 • String s; //声明一个字符串变量 • s=”This is a string.”; //初始化该字符串变量
3.1 Java编程结构 7. 类型转换 • Java语言不支持变量类型之间的任意转换。 • 允许的转换包括: byte->short->int->long->float->double以及char->int。 如果不进行强制类型转换,只能按照箭头的方向转换
3.1 Java编程结构 8. 数组 数组是一种最简单的复合数据类型,特点是其中的元素都具有相同的数据类型,要创建和使用一个数组,必须包含三部分的内容,即: 声明、创建和初始化。 • 声明一个数组要先确定数组元素的数据类型,并在后面加上数组名。 例如: int a[]; //C语言风格,声明一个整数数组 char ch[]; // C语言风格,声明一个字符数组 Point[] p; //Java语言风格,声明一个Point型数组 double[] d; //Java语言风格,声明一个double型数 组
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};
3.2 表达式和流程控制 1. 表达式 Java中的运算符(优先级由高到低排列)
3.2 表达式和流程控制 2. 流程控制 • 条件语句 条件语句包括if-else语句和switch语句。 if-else语句用于对单个条件的判定,可以嵌套使用; switch语句用于多重选择,但是只能对char型和除long以外的整数类型进行测试。
3.2 表达式和流程控制 • 循环语句 循环语句的作用是反复执行一段代码,直到满足终止循环的条件为止。Java语言提供了两种循环:不确定循环和确定循环。 不确定循环就是不知道循环体要被重复执行多少次的情况下使用的一种循环语句。不确定循环有while循环和do-while循环。 确定循环就是明确知道循环体应该重复执行的次数,并能够在程序中严格控制的一种循环语句。确定循环有for循环。
3.3 Java面向对象程序设计技术 • Java是一种完全面向对象的语言。 • 面向对象程序设计有两大特点: 抽象数据类型的概念和继承机制。 • 使用面向对象技术进行程序开发的好处有两点: 一是使用面向对象技术编写的类减少了编写整个程序和调试所需要的时间; 另一点是编写好的代码可以在不同的环境下重用。
3.3 Java面向对象程序设计技术 1. 对象、类和方法 对象就是变量和相关的方法的集合,其中变量表明对象的状态; 方法表明对象所具有的行为。 当多个对象具有一些共性时,可以将这些共性抽象出来,这就是类。
3.3 Java面向对象程序设计技术 2. 继承 继承是面向对象程序设计的一个重要机制。 Java不支持多重继承。 继承可以实现代码的复用,使程序的复杂度降低。 在继承机制中还有两个比较特殊的类,即final类和abstract类。
3.3 Java面向对象程序设计技术 3. 方法的重载和重写 方法重载指的是在一个类中可以有多个具有相同名字的方法 ; 方法重写指的是子类可以重新实现父类的某些方法 。
3.3 Java面向对象程序设计技术 方法重载和方法重写主要有以下四点不同 : • 重载的方法互相补充; 重写的方法往往会隐藏原方法。 • 重载的方法可以在一个类中以任何数量存在;父类中的每一个方法只能在子类中被重写一次。 • 重载的方法在参数列表上与原方法不同; 重写的方法在参数类型和参数顺序上必须与原方法相同。 • 重载的方法的返回类型可以自由选择; 重写的方法的返回类型必须与原方法相同。
3.3 Java面向对象程序设计技术 4. 包封装 Java提供包来管理类名空间。包是对类和其他包的封装,它实际上提供了一种命名机制和可见性限制机制。 5. 访问权限 在Java中,对类的实例变量和实例方法都有访问权限的控制。
3.3 Java面向对象程序设计技术 不同范围中的访问权限
3.3 Java面向对象程序设计技术 6. 接口 • 接口就是方法定义和常量值的集合。 • 接口中的实例方法一般被定义为 public或abstract
3.4 例外处理 1. 例外处理的类层次 • Java中例外类的最顶层是Throwable类,所有的异常事件都是它的后代。 • Java语言中的异常事件分为两大类: Exception类和Error类。
3.4 例外处理 2. 例外处理的两种方法 对于非运行时例外必须捕获或声明,而对运行时例外,可以交给Java运行时系统来处理。 使用try-catch-finally语句捕获例外 使用throws子句声明例外
3.4 例外处理 3. 定义自己的例外类 我们也可以用继承的方法定义自己的例外类。对于自定义的例外类,通常把它作为Exception类的子类
3.5 线程 程序中单个顺序的流控制称为线程。多线程就是在单个程序中可以同时运行多个不同的任务。 1. 线程的状态 一个线程有四种状态: • 准备状态(Ready) • 运行状态(Running) • 等待状态(Waiting) • 死亡状态(Dead)
3.5 线程 2. 线程体的构造 构造线程体就是要构造满足线程功能要求的run()方法。run()方法的实现有两种方法 继承Thread类构造线程体 实现Runnable接口构造线程体 两种创建线程体的方法核心内容都是要重写run()方法,不同点即run()方法的位置不同。
3.6 Java的输入/输出流 可从中读出一系列字节的对象称为“输入流”(Input Stream); 而能向其中写入一系列字节的对象则称为“输出流”(Output Stream)。
3.6 Java的输入/输出流 1. 输入/输出流的常用方法 输入流 (1)int read()、int read(buye[])、int read(byte[],int,int) (2)void close() (3)int available() (4)skip(long) (5)mardSupported()、mark(int)、reset()
3.6 Java的输入/输出流 输出流 (1)write(int)、write(byte[])、write(byte[],int,int) (2)close() (3)flush()
InputStream SequenceInputStream FileInputStream PipedInputStream ByteArrayInputStream FilterInputStream StringBufferInputStream DataInputStream LineNumberInputStream PushbackInputStream BufferedInputStream 3.6 Java的输入/输出流 2. 输入/输出的类层次
3.6 Java的输入/输出流 • FileInputStream和FileOutputStream • BufferedInputStream和BufferedOutputStream • DataInputStream和DataOutputStream • PipedInputStream和PipedOutputStream • InputStreamReader和InputStreamWriter • BufferedReader和BufferedWriter
Reader BufferedReader InputStreamReader CharArrayReader PipedReader FilterReader StringReader 3.6 Java的输入/输出流 Reader的类层次
3.6 Java的输入/输出流 3. 文件 • 文件对象的创建 (1)File myFile; myFile=new File(“myfile”);//当前目录下的 myfile文件 (2)myFile=new File(“/mydocs”,”myfile”);//mydocs目录下的 myfile文件 (3)File myDir=new File(“/mydocs”); myFile=new File(myDir,”myFile”);//结果与第二 种构造方法类似
3.6 Java的输入/输出流 • 文件测试的一些方法 (1)文件名信息 String getName():获取文件名 String getPath():获取文件路径 String getAbsolutePath():获取文件的绝对路径 String getParent():获取由当前对象所表示文件的父目录 boolean renameTo(File newName):将当前对象更名为参数所制定的文件名
3.6 Java的输入/输出流 (2)文件测试 boolean exists():检测本文件是否存在 boolean canWrite():判断是否可以向指定文件中 写入数据 boolean canRead():判断是否可以从指定文件中 读取数据 boolean isFile():检测本对象是否代表一个文件 boolean isdirectory(): 检测本对象是否代表一个 目录 boolean isAbsolute():检测被对象是否代表一个 绝对路径名
3.6 Java的输入/输出流 (3)文件信息和实用工具 long lastModified():检测当前File对象所对应的文件最后一次被修改的时间 long length():检测文件长度 boolean delete():删除当前File对象所对应的文件
3.6 Java的输入/输出流 (4)目录实用工具 boolean mkdir():建立一个目录,其路径名由当前File对象指定 String[] list():列出当前File对象所指定目录中的文件
3.6 Java的输入/输出流 • 随机文件的存取 Java语言提供了一个RandomAccessFile类,来实现随机文件的存取。