java指导书新.docx
《java指导书新.docx》由会员分享,可在线阅读,更多相关《java指导书新.docx(18页珍藏版)》请在冰豆网上搜索。
java指导书新
北方民族大学
BeifangEthnicUniversity
《java语言程序设计》课程实验指导书
北方民族大学教务处
北方民族大学
《Java语言程序设计》课程实验指导书
编著 林淑飞
校审 任荣
北方民族大学教务处
二〇一〇年六月
前言
本书是为指导学生进行java语言程序设计实验而定制的,目的是通过一系列实验练习使学生巩固所学的知识。
本书由绪论和基本实验指导两大部分内容组成,其中绪论部分包括本课程实验的作用与任务、本课程实验的基础知识、本课程实验的项目及要求;基本实验指导部分包括每个实验的目的、原理、主要仪器及耗材、实验内容及步骤、实验注意事项、思考题和参考文献。
目录
第一部分 绪论……………………………………………………………………………………1
第二部分 基本实验指导…………………………………………………………………………2
实验一 程序调试….…………………………………………………………………………2
实验二 继承与接口………………………………………………………………………….4
实验三 java的包……………………………………………………………………………..7
实验四 输入输出流…………………………………………………………………………..9
实验五 图形用户界面设计…………………..……………………………………………..11
第一部份绪论
一、本课程实验的作用与任务
使学生进一步深刻理解java语言基本概念、语法规则及程序结构,熟练掌握java语言程序设计的基本方法,提高利用java在网络环境下开发、设计应用程序的能力,从而进一步培养学生的创新能力和解决实际问题的能力。
熟悉JDK工具的编程和调试环境;熟练掌握选择和循环结构的程序设计;熟练掌握面向对象的程序设计思想,包括系统类的应用和用户自定义类;充分理解类的三种的特性:
封装、继承和多态,特别是通过接口和抽象类理解多态;掌握图形用户界面的设计,特别是事件处理;掌握包的使用;掌握常用的输入输出流类的应用。
最后能根据实验的要求认真完成实验报告。
二、本课程实验的基础知识
Java的基本数据类型包括:
byte,short,int,long,double,char。
Java的数组属于引用类型的数据,是将相同类型的数据按顺序组成的一种符合数据类型。
Java的运算符有算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符,特别要注意它们的优先级。
Java的控制语句有if语句、switch语句、for语句、while语句、do-while语句。
类是组成java程序的基本要素,类有两个重要的成员:
成员变量和方法。
类是创建对象的模板,类将对象的属性和功能封装为一个整体。
成员变量和类变量的区别、实例方法和类方法的区别、方法的重载、成员的访问权限等都是实验课程所依据的重要理论。
继承、多态、接口、包及内部类都是java中非常重要的概念。
Java使用“流”来读写数据。
Java的输入输出工作是通过FileInputStream类、FileReader类、BufferedReader类、ByteArrayInputStream类、ByteArrayOutputStream类等完成的。
要想使用java设计图形用户界面,必须掌握javax.swing和java.awt包中的所有容器类和组件类的用法。
三、本课程实验教学项目及其教学要求
序
号
实验项目名称
学
时
教学目标、要求
1
程序调试
2
能够使用jdk调试java程序
2
继承与接口
2
掌握继承、上转型对象、接口回调等知识
3
Java的包
2
能够设计自己的包并引用
4
输入输出流
2
能够读写txt文档
5
图形界面设计
2
制作一个简单的计算器
第二部份 基本实验指导
实验一 程序调试
一、实验目的
本实验的目的是让学生掌握开发java程序的三个步骤:
编写源文件、编译源文件和运行应用程序。
二、实验原理
一个java应用程序是由若干个类组成的,其中最多能有一个public类。
有且只能有一个类含有main方法。
Java源程序的扩展名为java。
Java源程序的名字必须和public类的类名相同,如果没有public类,只要和其中任一类的类名相同就行。
编译java源程序会产生字节码(.class)文件,源程序有几个类就会产生几个class文件。
运行时,只运行含有main方法的class文件。
例如,有一个java源程序有三个类A,B,C,其中A是public类,B含有main方法。
那么这个源程序的名字必须是A.java,编译此程序会产生三个字节码文件A.class,B.class,C.class.运行B.class。
三、主要仪器及耗材
PC机JDK包
四、实验内容与步骤
1.在控制台中输出九九乘法表
本练习可以使用户了解for语句实现循环功能。
具体步骤和要求如下:
1)打开一个文本编辑器,(如UtraEdit文本编辑器。
)建立一个新文件MultiplyList1.java,将该程序保存到D:
\myjava中。
2)将程序清单1-1中的程序代码输入到该文件中并保存。
程序清单1-1:
//MultiplyList1.java
publicclassMultiplyList1
{
publicstaticvoidmain(String[]args)
{
Stringoutput="";
for(程序段1){//设置九九乘法表的行row
for(程序段2)//设置九九乘法表的列col
output+=col+"*"+row+"="+(row*col)+"";//记录九九乘法表的内容
output+="\n";
}
System.out.println(output);//输出九九乘法表
System.exit(0);
}
}
3)运行结果如下图1-1所示。
请将程序清单1-1中的程序段1和程序段2补充完整。
图1-1运行结果,输出九九乘法表
4)打开命令行窗口。
具体方法:
开始—所有程序--附件—命令提示符
5)编译源程序。
D:
\myjava>javacMultiplyList1.java
6)运行程序。
D:
\myjava>javaMultiplyList1
2.用Applet小程序实现九九乘法表。
要求:
编写一个Applet小程序MultiplyList.java,将生成的类MultiplyList.class,嵌套在一个HTML如MultiplyList.html中,运行结果如图1-1所示。
图1-2Applet小程序的运行结果
五、实验注意事项
1.源程序的名字必须和public类的类名相同,如果没有public类,就和任意一个类的类名相同。
2.编译程序时,javac源程序名;而运行程序时,java含有main方法的类名
3.编译程序时如果遇到下面的错误提示:
CommandnotFound说明没有设置好系统变量Path;
FilenotFound说明没有将源文件保存在当前目录中。
4.运行时如果遇到下面的错误提示:
Exceptioninthread“main”java.lang.NoClassFoundError说明系统变量ClassPath没有设置好。
5.注意java是区分大小写的。
六、思考题
1.请同学们自己设计一个源程序,其中包含两个类,一个是public,另一个含有main方法。
七、参考文献
《JAVA基础教程》(第2版),耿详义编著,清华大学出版社,2007年。
《JAVA语言教程》(第1版),王伦津等编,人民邮电出版社,2001年。
《Java程序设计教程》(第5版),Deitel著,清华大学出版社,2004年。
《Java编程思想》(第3版),BruceEckel著,机械工业出版社,2005年。
实验二 继承与接口
一、实验目的
本实验的目的是让学生巩固以下概念:
1)子类的继承性;
2)子类对象的创建过程;
3)成员变量的继承与隐藏;
4)方法的继承与重写;
5)上转型对象的使用;
6)接口回调技术。
二、实验原理
子类继承父类的成员变量作为自己的一个成员变量,就好象它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法操作。
也就是说,一个子类继承的成员应该是这个类的完全意义的成员。
多态是面向对象编程的又一重要特征,多态指某个类的不同子类可以根据各自的需要重写父类的某个方法。
当我们把子类创建的对象的引用放到一个父类的对象中时,就得到了该对象的一个上转型对象,那么这个上转型对象在调用这个方法时就可能具有多种形态,因为不同的子类在重写父类的方法时可能产生不同的行为。
接口是java中非常重要的概念,必须很好地理解和掌握。
接口的思想在于它可以增加类需要实现的功能,不同的类可以使用相同的接口,同一个类也可以实现多个接口。
接口回调是多态的另一种体现,接口回调是指:
可以把使用某一接口的类创建的对象的引用赋给接口声明的接口变量中,那么接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是同志相应的对象调用接口的方法,这一过程称为对象功能的接口回调。
不同的类在使用同一接口时,可能具有不同的功能体现,即接口的方法体不必相同,因此接口回调可能产生不同的行为。
三、主要仪器及耗材
PC机JDK包
四、实验内容与步骤
实验内容有以下两个:
1.编写一个java程序,除了主类外,该程序中还有2两个类:
People和ChinaPeople。
People类有访问权限是protected的double类型成员变量height和weight,以及publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。
ChinaPeople类是People类的子类,新增了publicvoidchinaGongfu()方法。
要求ChinaPeople重写父类的publicvoidspeakHello()方法。
具体的步骤如下:
1)定义People类。
classPeople{
protecteddoubleheight,weight;
publicvoidspeakHello(){System.out.println(“hello”);}
publicvoidaverageHeight(){System.out.println(height);}
publicvoidaverageWeight(){System.out.println(weight);}
}
2)定义ChinaPeople类。
classChinaPeopleextendsPeople{
publicvoidspeakHello(){System.out.println(“大家好!
”);}
}
3)定义主类如下:
publicclassShiYan_2{
publicstaticvoidmain(Stringr[]){
ChinaPeoplecp=newChinaPeople();
cp.speakHello();cp.averageHeight();
Peoplep=newChinaPeople();
p.speakHello();p.averageHeight();
}
}
2.编写一个java程序,除了主类外,有一个接口People,接口中有一个方法publicvoidspeakSales(),有三个实现类:
Teacher,Worker和Pleasant。
具体步骤如下:
1)定义People接口.
InterfacePeople{publicvoidspeakSales();}
2)定义三个实现类如下:
classTeacherimplementsPeople{
publicvoidspeakSales(){System.out.println(“1000”);}
}
classWorkerimplementsPeople{
publicvoidspeakSales(){System.out.println(“800”);}
}
classPleasantimplementsPeople{
publicvoidspeakSales(){System.out.println(“10”);}
}
3)定义主类如下:
publciclassA{
publicstaticvoidmain(Stringr[]){
Peoplep1[]=newPeople[3];
p1[0]=newTeacher();p1[1]=newWorker();p1[2]=newPleasant();
p1[0].speakSales();p1[1].speakSales();p1[2].speakSales();
}
}
五、实验注意事项
1.方法重写时一定要保证方法的名字、类型、参数的个数和类型同父类的某个方法完全相同,只有这样子类继承的这个方法才被隐藏。
2.注意接口数组的初始化和接口对象的初始化的区别。
六、思考题
1.请同学们修改此程序,尽量使用抽象类。
2.抽象类和接口有什么异同?
七、参考文献
《JAVA基础教程》(第2版),耿详义编著,清华大学出版社,2007年。
《JAVA语言教程》(第1版),王伦津等编,人民邮电出版社,2001年。
《Java程序设计教程》(第5版),Deitel著,清华大学出版社,2004年。
《Java编程思想》(第3版),BruceEckel著,机械工业出版社,2005年。
实验三 java的包
一、实验目的
本实验的目的是让学生掌握包的概念和包的使用,能够在平时设计程序时灵活创建包和导入包。
二、实验原理
包是java语言中有效管理类的一个机制。
java的系统类都包含在相应的包中,如java的lang包、swing包、awt包等。
每个包中有好多类可供用户直接使用,用户想要使用哪个包中的类,就得在他的应用程序中导入这个包,如importjava.lang.*。
用户也可以定义自己的包,方法是:
package包名;package语句必须是java源程序的第一条语句。
某个源程序包含了package语句,说明此程序中所有的类都将被包含在包中。
包名的形式是*.*.*,如tom.lsf,这样的话用户的电脑上必须包含../tom/lsf这样的目录结构,而且要求编译生成的字节码文件必须放在tom文件夹下的lsf文件夹里。
在编译一个包中的类时,-d使javac编译器基于该类的Package声明创建正确的目录。
-d用来指定生成的字节码文件所在的目录。
-classpath显式的列出需要加载的类的路径,但它会把当前目录从该路径中删除,如果必须加载当前目录中的类,必须显式得包含当前目录(.)。
三、主要仪器及耗材
PC机JDK包
四、实验内容与步骤
实验内容如下:
编写一个java程序,并将此程序放在包tom.lsf中。
编写另外一个java程序,并引用tom.lsf包中的类。
具体步骤如下:
1)编写类A。
packagetom.jyb;
publicclassA{
inta,b;
A(inta,intb){this.a=a;this.b=b;}
}
2)编译A.java,并将A.class放到当前目录下的tom文件夹下的jyb文件夹里。
具体的方法有两种,一种是直接拷贝,一种是编译时使用-d直接将生成的class文件放到指定的位置。
3)定义类B.
packagetom.jyb;
publicclassB{
publicstaticvoidmain(Stringr[]){
Aa1=newA(4,5);System.out.println(a1.a+”“+a1.b);
}
}
4)使用-classpath编译并运行B.java。
运行B类文件的命令为:
javatom.jyb.B
此命令因为类B的类文件被打包到tom.jyb中,所以要运行必须给出类B的类文件的完整路径,即tom.jyb.B
5)若把类A前面的修饰符public去掉,并且去掉类B定义中的打包语句packagetom.jyb;,(即B类不需打包),编译并运行,看看会发生什么事?
请记录错误信息,并说明原因。
你有什么解决办法?
请列举出来。
(提示:
请注意理解类及类成员的封装性)
五、实验注意事项
1.-classpath和-d的使用。
2.package语句必须在import语句的前面。
六、思考题
1.请同学们制作自己的包,把一些常用的功能封装在里面,以备今后使用。
七、参考文献
《JAVA基础教程》(第2版),耿详义编著,清华大学出版社,2007年。
《JAVA语言教程》(第1版),王伦津等编,人民邮电出版社,2001年。
《Java程序设计教程》(第5版),Deitel著,清华大学出版社,2004年。
《Java编程思想》(第3版),BruceEckel著,机械工业出版社,2005年。
实验四 输入输出流
一、实验目的
本实验的目的是让学生掌握java的字节输入输出流的方法,掌握java的字符输入输出流、缓冲流的用法。
二、实验原理
当程序需要读取磁盘上的数据或将程序中的数据存储到磁盘时,就可以使用输入/输出流,简称I/O流。
I/O流提供一条通道程序,可以使用这条通道读取”源”中的数据,或把数据送到”目的地”。
FileOutputStream类创建的对象称为文件字节输出流,可按字节将数据写入到文件中。
FileInputStream类创建的对象称为文件字节输入流,可按字节读取文件中的数据。
FileReader类创建的对象称为文件字符输入流,可按字符读取文件中的数据。
Filewriter类创建的对象称为文件字符输出流,可按字符将数据写入到文件中。
BufferedReader类创建的对象称为缓冲输入流,该输入流的指向必须是一个Reader流,称为BufferedReader流的底层流。
底层流负责将数据读入到缓冲区,BufferedReader流的源就是这个缓冲区,缓冲输入流再从缓冲区读取数据。
BufferedWriter类创建的对象称为缓冲输出流,可以将BufferedWriter和FileWriter连接在一起,FileWriter流称为BufferedReader流的底层流。
BufferedWriter将数据写入缓冲区,底层流负责将数据写到最终的目的地。
三、主要仪器及耗材
PC机JDK包
四、实验内容与步骤
实验内容如下:
编写一个java程序,给已存在的文本文件添加行号。
要求该文本文件事先用文本编辑完毕,保存在D:
\1000目录中,命名为Hello.txt。
具体步骤如下:
1)生成Hello.txt文件;
2)设计读取Hello.txt文件的输入流对象和加入序号后保存的输出流对象;
3)设计程序结构;
publicclassA{
publicstaticvoidmain(Stringr[]){
FileReaerfr=newFileReader(newFile(“Hello.txt”));
BufferedReaderbr=newBufferedReader(fr);
FileWriterfw=newFileWriter(newFile(“temp.txt”));
BufferedWriterbw=newBufferedWriter(fw);
Strings=null;
do{
s=br.readLine();
bw.write(s);bw.newLine();
}while(s!
=null);
…………..
}
}
五、实验注意事项
1.BufferedWriter对象调用newLine()可以向文件写入回行。
2.BufferedReader对象调用readLine()方法可以读取文件的一行。
六、思考题
1.请同学们使用字节流的方式实现上述功能。
七、参考文献
《JAVA基础教程》(第2版),耿详义编著,清华大学出版社,2007年。
《JAVA语言教程》(第1版),王伦津等编,人民邮电出版社,2001年。
《Java程序设计教程》(第5版),Deitel著,清华大学出版社,2004年。
《Java编程思想》(第3版),BruceEckel著,机械工业出版社,2005年。
实验五 图形用户界面设计
一、实验目的
1.掌握常用图形界面组件(按钮、文本框等)对象的创建及其常用方法的使用。
如,按钮的常用方法是getLabel(),文本框的常用方法有setText(),getText()等。
2.掌握常用的布局管理类CardLayou,BorderLayout,FlowLayout,GridLayout的使用策略。
能够将它们联合起来使用。
3.掌握java语言的事件处理。
每个事件对应的接口(或适配器类)是什么,每个接口有哪些方法,如何进行委托处理,被委托者必须做什么。
二、实验原理
通过图形用户界面(GUI),用户和程序之间可以方便地进行交互。
javax.swing包中的组件类可以帮助我们完整界面的设计。
javax.swing包的JComponent类是java.awt包中的Container类的一个直接子类、Component类的间接子类。
javax.swing包中的JFrame类和JDialog类分别是java.awt包中Frame类和Dialog类的直接子类、Window类的间接子类。
在学习GUI编程时,必须很好地理解并掌握两个概念:
容器类和组件类,必须很好地掌握java的事件处理机制。
三、主要仪器及耗材
PC机JDK包
四、实验内容与步骤
实验内容:
设计一个简单的计算器。
需要做以下预习工作:
1.在纸上设计好计算器的布局。
如下图所示。
2.考虑好使用哪些布局管理类能实现你设计的布局。
3.计算器上每个组件所产生的事件,对应的事件处理接口有哪些方法,哪个方法是处理当前事件的方法,等等都要提前考虑好并写到纸上。
4.设计好算法。
当单击数字按钮时会在文本框中显示相应的数字,表示此数字即将参与运算。
当单击第一个运算符时,要做的工作是将文本框中数字作为一个运算对象保存到变量one中,并将此运算符保存到变量fu中,等待另一个运算对象的输入。
当单击第二(或第三…)运算符时,要做的工作是将当前文本框中的数字和one的值按fu中的运算符进行运算,并将运算结果存到one中,依次类推直到遇到“=”结束。
具体步骤:
1.设计界面。
定义一个Frame类的子类MyFrame,并将所有按钮和文本框组件定义为其成员。
2.通过布局类设计每个组件在MyFrame中的位置。
3.测试所设计的界面。
4.为每个按钮增加监听器。
可用类MyFrame的当前对象this作