java实验指导书精品资料.doc
实验一 Java运行环境的下载、安装、配置与运行一、实验目的及要求目的:掌握如何下载java JDK软件包,如何设置Java程序的运行环境,如何编写与运行Java程序,了解Java概貌。要求:1、安装Java JDK软件包;2、练习编写简单的Java Application程序并掌握其运行步骤;3、练习编写Java Applet小应用程序并掌握其运行步骤。二、实验环境计算机一台,JDK,NetBeans三、实验原理应用Application与Applet的基本语句编写简单的Java程序四、实验内容及步骤1. JDK的下载与安装(1) 下载JDK为了建立基于JDK的Java运行环境,需要下载Sun公司的免费JDK软件包,网站为(2) 安装JDK运行下载的JDK软件包,jdk-6u22-windows-i586.exe,可安装JDK。在安装过程中可以设置安装路径及选择组件,系统默认的安装路径为C:Program FilesJavajdk1.6.0_22(以下配置环境时假设此路径即为JDK安装路径),默认的组件选择是全部安装。(3) 配置Java的运行环境在系统环境变量Path中添加“C:Program FilesJavajdk1.6.0_22;”,在系统环境变量中新建CLASSPATH,其值为“.; C:Program FilesJavajdk1.6.0_22libtools.jar; C:Program FilesJavajdk1.6.0_22libdt.jar;”。(4) 测试进入命令提示符,输入命令“java -version”,如显示Java版本说明环境变量配置正确,如不显示请重新配置。2. Java Application程序的建立与运行用记事本编写如下简单的Java Application程序后,将其保存为MyFirstApplication.java(注意:将已知文件的扩展名设为可见,并去掉记事本文件的.txt扩展名)的文件格式。编译Java Application源程序的步骤如下:(1) 打开命令提示符窗口(MS-DOS窗口),进入Java源程序所在的路径。(2) 键入编译器文件名和要编译的源程序文件名,例如:javac MyFirstApplication.java 使用Java编译器编译通过之后,生成二进制字节码文件(主类名.class),使用Java解释器(java.exe)可将编译后的字节码文件解释为本地计算机代码。(3) 在命令提示符窗口(MS-DOS窗口)键入解释器文件名和要解释的字节码文件名,例如:java MyFirstApplication,按回车键即开始解释并可看到运行结果。3. Java Applet程序的建立与运行建立Java Applet源程序文件,注意:文件中必须要引入java.awt.*和java.applet.*两个工具包。例如:编译Java Applet与编译Java Application操作过程相同。编译通过之后,会生成二进制字节码文件(例如:MyFirstApplet.class), 由于Java小应用程序是不能直接运行的,必须嵌入到网页中,因此将小应用程序MyFirstApplet.class嵌入在HTML文件MyFirstApplet.html(该网页文件名可任意)中,HTML文档文件MyFirstApplet.htm代码如下:运行Java Applet程序,有两种方式:一是在命令提示符窗口(MS-DOS窗口)键入appletviewer MyFirstApplet.html;二是直接运行MyFirstApplet.html文件。4. 实验完成项目(1) 试编写一个简单的Java程序,在屏幕上打印出自己的名字。(2) 是编写一个程序,将1-500间能同时被2,5,7整除的数打印出来。五、实验报告要求1. 要求实验报告各部分内容全部填写,完成日期填写当次实验与下次实验期间某一天。2. 每位同学在实验报告封皮左上角写上自己在本课堂的选课序号,各同学序号在附件名单中给出。六、思考题分析Java Application程序与Java Applet程序的不同之处。实验二 Java基础语法练习一、 实验目的及要求目的:(1) 掌握各种变量的声明方式(2) 掌握Java的基本数据类型、运算符与表达式的使用方法。(3) 理解Java的程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。(4) 通过以上内容,掌握Java语言的编程规则要求:(1)编写一个声明Java不同数据类型变量的程序(2)编写使用运算符、表达式和变量的程序(3)编写使用选择结构的程序(4)编写使用循环结构的程序,包括双重循环二、实验环境计算机一台,NetBeans三、实验原理Java语言语法和控制语句方面的基础知识四、实验内容与步骤1. 声明不同数据类型变量(1)编写一个声明不同数据类型变量的程序的文件 (2)修改程序输出不同数据类型变量的值。 2. 使用关系运算符和逻辑运算符(1)建立使用关系运算符和逻辑运算符的程序文件,例如: (2)编译并运行该程序3. 使用选择结构(1) 使用if else语句(2) 使用switch语句4. 使用循环结构(1) for循环语句练习程序功能:按5度的增量打印出一个从摄氏温度(0-40)到华氏温度的转换表(摄氏(C)、华氏(F)温度单位换算: F=(9/5)*C+32)(2) do while循环语句练习程序功能:求1+2+3+100之和,并将求和表达式与所求的和显示出来。(3) 多重循环练习输出九九乘法表的程序5.实验完成项目1. 求出所有的水仙花数。水仙花数是一个3位整数,其各位数的立方和等于这个数本身。2. 求一个3*3矩阵的对角线元素与反对角线元素之和。3. 试编写一个程序,显示如图所示的一个数字金字塔 1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321五、思考题1. 分析下面的程序,说出下面的程序为什么是死循环?class Sun public static void main(String args) int i=1,n=10,s=0 while(i<=n) s=s+i; System.out.println(“s=”+s); 六、实验报告要求1. 写出实验内容中实验完成项目中所有试题的源程序。79实验三 数组和字符串的使用二、 实验目的及要求目的:了解多维数组的创建和使用,掌握一维数组和二维数组的创建和使用及String和StringBuffer类的创建方法,掌握String类中常用方法的使用,掌握String类中equals()方法和”=”的区别,区分数组的length字段和String类的length()方法要求:(1)编写一个使用Java数组的程序(2)编写一个字符串操作程序(3)编写一个带随机数及键盘输入的程序(4)编写编写一个创建对象和使用对象的方法的程序二、实验环境计算机一台,editplus三、实验原理Java语言面向对象程序设计方面的基础知识四、实验内容与步骤1. 使用数组(1)建立使用数组的程序:建立一个长度为5的一维数组;一个长度为12的三维数组,其中第一维的长度为2,第二维的长度为3,第三维的长度为7。(2)编写一个Java程序,对一个整型数组进行排序。2. 有字符串s1=”abc”,s=new String(“abc”),s3=”a”+”bc”,编写一个程序判断这三个字符串是否相等,为什么?(注意揣摩 equals()方法和”=”的区别)3.实验完成项目1. 用冒泡排序对数组a=23,4,32,67,42,42,41,32,15进行从小到大排序。2. 若一个字符串正读和反读都一样,如level、noon等,就称之为回文。编写一个程序,验证输入的字符串是否为回文串。3. 用Java编写一个彩票中奖模拟程序,实现下述功能:用户键入1100的一个整数。然后程序随机产生1100的3个不相同的数字,分别代表一等奖、二等奖和三等奖的获奖号码。最后进行比较,并输出用户是否中奖的信息。五、思考题1. 编写一个Java程序,将my age is 23 years中的23提取出来,通过下述程序理解String与StringBuffer类的区别与联系,并查询API了解StringBuffer类的常用方法。import java.lang.*;public class Digesterpublic static void main(String args) StringBuffer sb1=new StringBuffer("my age is 23 years"); StringBuffer sb2=new StringBuffer(); int i, result=0; char ch; for(i=0;i<sb1.length();i+) ch=sb1.charAt(i); if(ch>=0)&&(ch<=9) sb2.append(ch); if(sb2.length()>0) result=Integer.parseInt(sb2.toString(); System.out.println(“The result is: ”+result); 2String类中的equals()方法和”=”的区别。六、实验报告要求将实验完成项目源程序写到实验报告中。实验四 面向对象程序设计验证实验一、实验目的及要求目的:1掌握类的声明和类继承与派生的定义2掌握对象的创建使用和不同访问属性的成员方问方式3掌握this和super的使用。4. 掌握方法重载和方法重写的使用要求:(1)编写编写一个创建对象和使用对象的方法的程序(2)编写一个方法重载的程序(3)编写一个类的继承的程序(4)根据已学内容编写一个自定义类二、实验环境计算机一台,JDK,EditPlus三、实验原理Java语言面向对象程序设计方面的基础知识四、实验内容与步骤1. 创建对象和使用对象的方法2. 方法重载3. 构造方法重载4. 类的继承5.实验完成项目 (1) 编写一个学校类,其中包含成员变量line(录取分数线)和对该变量值进行设置和获取的方法。编写一个学生类,它的成员变量有考生的name(姓名)、id(考号)、total(综合成绩)、sports(体育成绩)。它还有获取学生的综合成绩和体育成绩的方法。编写一个录取类,他的一个方法用于判断学生是否符合录取条件。其中,录取条件为:综合成绩在录取分数线之上,或体育成绩在96分以上并且综合成绩大于300。在该类的main()方法中,建立若干个学生对象,对符合录取条件的学生,输出其信息及“被录取”。要求:学生类的构造方法带有4个参数,分别用于接收学生的姓名、考号、综合成绩和体育成绩(2) 根据给出的UML图设计长方形类和它的子类正方形类,分别计算机周长和面积。五、思考题1面向对象的基本特征有哪些? 2构造方法的特点是什么? 3子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?同名的不同方法共存的情况称为什么?六、实验报告要求将实验完成项目的源程序写到实验报告中。实验五 抽象类、接口与动态绑定一、 实验目的及要求目的:1.了解Java中包(package)的作用,掌握包的设计方法。2.熟练掌握抽象类abstract的概念及设计方法。3.熟练掌握接口interface的概念及设计方法。4.掌握方法的多态性要求:1.了解Java系统包的结构2.掌握抽象类的作用及设计方法3.掌握使用系统接口的技术和创建自定义接口的方法二、实验环境计算机一台,JDK,EditPlus三、实验原理包、接口与异常处理的基本语句四、实验内容与步骤1. 类的装载过程new Manager("Smith","sales")调用过程:(1)绑定构造函数参数。其实就是传递参数的过程(2)查看是否有this()语句。没有。虽然没有使用this()语句调用构造函数,但是该步骤不能省略(3)调用super()语句,此时,程序跳转到Public Employee(String n)。(4)绑定构造函数参数String n(5)查看是否有this()。有,则执行构造函数public Employee(String n,Date DoB)(6)绑定构造函数参数String n,Date DoB(7)查看是否有this()语句。没有(8)执行由系统自动插入的super()语句:执行super1()(9)执行显式初始化语句System.out.println("super1 ok");(10)执行构造函数语句System.out.println("3");(11)执行显式初始化语句private double salary=1500.00;(12)执行构造函数语句System.out.println("2");同时执行name=n;birthday=DoB;(13)执行构造函数语句System.out.println("4");(14)执行显式初始化语句System.out.println("Manager ok");(15)执行构造函数语句department=d; 2了解和使用Java的系统包包是类和接口的集合。利用包可以把常用的类或功能相似的类放在一个包中。Java语言提供系统包,其中包含了大量的类,可以在编写Java程序时直接引用它们。为便于管理和使用它们,将这些类分为了不同的包。包又称为类库或API包,API包既应用程序接口。编译带包的java类的方法如下:运行带包的java类的方法如下:3. static修饰符4. static属性试着修改程序中main方法的代码,观察静态属性的特点。5 static代码块6 接口的使用5.实验完成项目-抽象类与接口的使用(1)定义一个抽象类shape,它包含一个抽象方法getAea(),从Shape类派生出Rectangle和Circle类,这两个类都用getArea()方法计算对象的面积。编写应用程序使用Rectangle和Circle类。(说明:定义Rectangle和Circle类的构造方法,初始化成员变量。)(2)学校中有教师和学生两类人,而在职博士生既是教师又是学生。设计两个接口StuInterface和TeaInterface。其中,StuInterface接口包括对学费的set()和get()方法,分别用于设置和获取学生的学费;TeaInterface接口包括对工资的set()和get()方法,分别用于设置和获取教师的工资。定义一个博士生类Doctor,实现StuInterface接口和TeaInterface接口,它的成员变量有name(姓名)、sex(性别)、age(年龄)、fee(每学期学费)、pay(月工资),如果收入减去学费不足3000元,则输出“provide a loan”(需要贷款)信息。编写测试类,测试所创建的Doctor类。(说明:在Graduate中实现各个接口定义的抽象方法。)五、思考题1、接口与抽象类的区别?2、多态存在的条件?六、实验报告要求将实验内容1,5的源程序写到实验报告中。实验六 异常处理二、 实验目的及要求目的:了解异常的概念,掌握异常处理的方法,掌握throws与throw关键字的区别与联系,掌握自定义异常的方法及用途。要求:(1)编写程序了解程序中可能出现的运行时异常与非运行时异常(2)编写程序使用try-catch-finally处理异常(3)编写程序掌握throws与throw的用法(4)理解系统异常处理的机制和创建自定义异常的方法二、实验环境计算机一台,JDK,EditPlus三、实验原理异常处理方法四、实验内容与步骤1. 文件操作异常(分析该程序存在哪些运行时异常和非运行时异常,并将程序改正确)2 数组下标越界异常(找到程序中的异常,并将其改正)3try-catch-finally处理异常过程4抛出异常(注意该程序与之前的Exception1出现的异常的异同)5 捕获异常(在Exception1的基础上加上捕获异常,观察程序运行结果)6 try-catch-finally嵌套7 自定义异常调用8. 实验完成项目(1)程序功能:通过继承Exception异常类,创建一个自定义异常类MyException,然后再创建一个主类,使用自定义异常类MyException。(2)在编写程序过程中,如果希望一个字符串的内容全部是英文字母,若其中包含其他的字符,则抛出一个异常。因为在Java内置的异常类中不存在描述该情况的异常,所以需要我们自定义该异常类。a.创建MyException异常类,此部分要求读者自己编写。b.创建Exercise5_5类,在此类中创建一个带有String型参数的方法check(),该方法用来检查参数中是否包含英文字母以外的字符。若包含,则通过throw抛出一个MyException异常对象给check()方法的调用者main()方法。此部分代码已给出,要求根据下面的代码写出自定义类MyException的代码。public class Exercise5_5 public static void check(String str) throws MyException /指明要抛出的异常 char a = str.toCharArray();/将字符串转换为字符数组 int i = a.length; for (int k = 0; k < i - 1; k+) /检查字符数组中的每个元素 /如果当前元素是英文字母以外的字符 if (!(ak >= 65 && ak <= 90) | (ak >= 97 && ak <= 122) /抛出MyException异常类对象 throw new MyException("字符串"" + str + ""中含有非法字符!"); public static void main(String args) String str1 = "HellWorld" String str2 = "Hell!MR!" try check(str1);/调用check()方法 check(str2);/执行该行代码时,抛出异常 catch (MyException e) /捕获MyException异常 System.out.println(e.getContent();/输出异常描述信息 五、思考题1.简述Error和Exception的区别与联系。2. 简述异常处理的过程。3. 什么时运行时异常和非运行时异常,它们两者的区别是什么?4. 简述throw和throws的区别。六、实验报告要求将实验内容1,5,6,8(2)和思考题的源程序写到实验报告中。实验七 期中练习三、 实验目的及要求目的:掌握File类的作用和使用方法,掌握运用文件字节输入输出流对文件进行操作,综合运用学过的知识。要求:(1)编写FileDemo类测试File类的常用方法(2)用FileOutputStream类向文件中写入一串字符,然后用FileInputStream读出写入的内容(3)综合运用学过的知识设计一个程序模拟银行的自动取款机ATM的使用过程二、实验环境计算机一台,JDK,EditPlus三、实验原理File类、FileInputStream类和FileOutputStream类的用法四、实验内容与步骤1. 编写一个FileDemo类测试File类的如下主要方法。(1) 访问属性1) boolean canRead() 测试File实例所指文件或目录是否可读。2) boolean canWrite() 测试File实例所指文件或目录是否可写。3) boolean exists() 测试File实例所标识的文件或目录是否存在。4) File getAbsoluteFile() 返回File实例的绝对路径。5) String getName() 返回由File实例表示的文件或目录的名称。6) String getParent() 返回File实例所指文件或目录的父目录的路径名,如果此路径名没有指定父目录,则返回null。7) String getPath() 返回File实例所表示的路径名。8) boolean isDirectory() 测试File实例所标识的文件是否是一个目录。9) boolean isFile() 测试File实例所标识的文件是否是一个标准文件。(2) 新建、更名与删除1) boolean createNewFile()当File实例所标识的文件不存在而其父路径存在时,新建一个空的普通文件并返回true。若文件已存在或不能被创建则返回false。2) boolean mkdir()当File实例所标识的目录不存在而其父路径存在时,新建一个目录并返回true。3) boolean mkdirs()当File实例所标识的目录不存时,新建一个目录以及父路径中的各级原先不存在的父目录,并返回true。4) boolean delete()删除由File实例所指的文件或者目录。若删除的是目录,那么该目录必须为空。5) boolean renameTo(File dest)将当前File实例所指的文件或者目录更改为由参数dest标识。该方法既可以实现文件或目录的更名,也可以实现文件或目录的移动。在实现移动时,方法会自动创建需要的各级父目录。(3) 目录列表1) String list()返回File实例所指目录中的所有文件或子目录的名字组成的字符串数组。若当前File实例表示的是普通文件而不是一个目录,则返回null。2) File listFiles()如果File实例所指的不是一个目录,那么此方法将返回null。否则返回一个File对象数组,每个数组元素对应目录中的每个文件或目录。如果目录为空,那么数组也将为空。2. 用FileOutputStream类向文件中写入一串字符,然后用FileInputStream读出写入的内容。3. 模拟银行的自动取款机ATM 使用过程中的界面和用户交互过程功能说明:(1)模拟自动取款机(ATM)的流程,实现查询银行卡余额、取款、存款、退出系统等功能。(2)取款金额受卡余额的限制。(3)程序的运行过程如下图所示。实验八 输入/输出流四、 实验目的及要求目的:通过实验掌握java提供的输入/输出包中类的使用,特别是一些常用的类的方法的使用,运用流的概念实现对象的序列化。要求:(1)编写程序使用BufferedReader和BufferedWriter对文件进行操作;(2)编写对象序列化与解序列化的验证程序;(3)编写从文件中读写不同格式、不同数据类型的数据。二、实验环境计算机一台,JDK,EditPlus三、实验原理File类、常用I/O流的用法,对象序列化四、实验内容与步骤1. BufferedReader和BufferedWriter的使用。程序运行后,在命令提示符下输入字符,程序会将输入的字符存储至指定的文件中,如果要结束程序,输入quit字符串即可。2. 利用序列化存储和恢复游戏人物。3. 运用学过的输入流从test1.txt文件中读取一个整数矩阵,并将读入的数组输出到文件answer1.txt中,输入样例如下:3 411 12 13 14 21 22 23 24 31 32 33 342 310 11 1220 21 220 0第一行3 4表示将要读入3行4列的矩阵,接下来的3行为矩阵内容,最后一行的0 0表示结束,则输出到answer1.txt中的结果为:11 12 13 14 21 22 23 24 31 32 33 3410 11 12 20 21 22示例程序如下:4. 要求把程序3程序修改为读取字符数组test2.txt文件中的输入样例如下:3 4ABCDEFGHIJKLMNO2 3AAABBB0 0输出文件answer2.txt中的结果为ABCDEFGHIJKLMNOAAABBB5. 从文件test3.txt中读取数据并将其输出到answer3.txt中test3.txt文件中的内容:12;123.4;23.5answer3.txt文件中的结果为:12123.423.56.实验完成项目(1)试利用流操作进行编程,要求从键盘输入一个文本文件的名字,在屏幕上显示该文本文件内容及文件的路径、修改时间、大小、长度、可读性和可修改性等属性。文件名通过命令行以参数方式输入。程序需要判断参数所提供文件的存在性。(2)编程实现以下功能:从键盘输入姓名、学号、成绩,并保存到文本文档中。重复进行,直到输入空字符串为止。从文件中读取各学生的成绩,并计算所有学生成绩的平均值、最大值和最小值。五、思考题1.思考从文件中读取不同格式、不同数据类型数据的方法。2. InputStream,OutputStream,Reader和Writer类的功能有何异同六、实验报告要求将实验内容4,5的源程序写到实验报告中。实验九 多线程的处理五、 实验目的及要求目的:理解线程的概念,掌握Java的多线程机制,会用多线程编写Java程序。要求:(5) 理解线程的概念(6) 会用Thread类创建线程(7) 会使用Runnable接口创建多线程(8) 对两种实现多线程方式的方式进行对比(9) 掌握线程的同步二、实验环境计算机一台,JDK,EditPlus三、实验原理Java语言中多线程处理的原理四、实验内容与步骤1继承Thread类实现多线程,试着修改setName方法的位置,看看运行效果2实现Runnable接口实现多线程3多次运行以下程序,观察多个线程同时运行时的输出结果变化4.用实现多线程技术来模拟铁路售票系统,实现通过4个售票点发售某日某次列车的100张车票,一个售票点用一个线程来表示。比较下面两段代码的异同,并修改代码一实现100张票共享,修改后注意代码一和代码二的多次运行结果,看有没有什么问题存在?代码一:代码二:五、思考题创建Exercise6_1类,该类实现了Runnable接口,并在run()方法中每间隔0.5秒,在控制台输出一个“*”字符,直到输出15个“*”字符(用sleep方法实现)。六、实验报告要求将实验内容3,4和思考题的源程序写到实验报告中。实验十 多线程的处理六、 实验目的及要求目的:理解线程的概念,掌握Java的多线程机制,会用多线程编写Java程序。要求:(10) 理解线程的概念(11) 会用Thread类创建线程(12) 会使用Runnable接口创建多线程(13) 对两种实现多线程方式的方式进行对比(14) 掌握线程的同步二、实验环境计算机一台,JDK,EditPlus三、实验原理Java语言中多线程处理的原理四、实验内容与步骤1 线程中Join方法的应用2 加入延迟的多个线程同时启动,观察多次运行结果的异同3 加入优先级的多个线程同时运行,观察多次运行结果的异同五、思考题通过下面的程序了解wait()和notify()的用法class MyObject implements Runnable private Monitor monitor; public MyObject(Monitor monitor) this.monitor = monitor; public void run() try System.out.println("I'm going.");Thread.sleep(3000); monitor.gotMessage(); catch (InterruptedException e) e.printStackTrace(); class Monitor implements Runnable private volatile boolean go = false; public synchronized void gotMessage() throws InterruptedException go = true; notify(); public synchronized void watching() throws InterruptedException if (go = false) wait(); System.out.println("He has gone."); public void run() try watching(); catch (InterruptedException e) e.printStackTrace(); public class Wait public static void main(String args) Monitor monitor = new Monitor(); MyObject o = new MyObject(monitor); new Thread(o).start(); new Thread(monitor).start(); 实验十一 Java的网络应用一、 实验目的及要求目的:熟悉java中网络通讯的基本原理及简单网络程序的开发。内容:1.编写使用ServerSocket创建服务器端程序;2.编写使用Socket创建客户器端程序;3.验证使用套接字实现网络通信的方法。二、实验环境计算机一台,JDK,EditPlus三、实验原理Java语言中Socket编程四、实验内容与步骤1.设计一个多客户端的带图形用户界面的聊天程序,要求启动一个服务器端程序,可以启动多个客户端聊天窗口,任一客户端发送到服务器的消息都会被分发给所有客户端,即每个客户端都可以看到所有人的发言。(1) 服务器端程序。(2) 客户端程序。 程序运行界面如图所示。多客户端聊天程序界面五、实验报告要求将实验内容1的源程序写到实验报告中。附录资料:java重点笔记归纳整理Java初级eclipse快捷键:右键>REFACTER->RENAME 一改全改ALT+ENTER 查看现在项目的位置 Alt+ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+ 当前行和上面一行交互位置(同上) Ctrl+W 关闭当前Editer C+/ 注释(取消注释)选中行C+S+/ 注释多行C+S+取消注释 F2 查看完整的函数帮助信息,并且可以复制粘贴文字 ,当选中文件时,有改名作用 F3找到变量的定义 C+鼠标点击 找到变量的定义 作用和F3C差不多。 F4找到接口方法的具体实现类.=C+T F5刷新 C+F6:在打开的文件间进行切换; C+F7:在资源窗口间进行切换; C+F8:在各种模式间进行切换; C+E:选择某个打开的文件; C+S+r:打开一个文件; c+s+t: