Java实验指导书.docx
《Java实验指导书.docx》由会员分享,可在线阅读,更多相关《Java实验指导书.docx(23页珍藏版)》请在冰豆网上搜索。
Java实验指导书
Java程序设计实验指导书
(自编教材)
第二部分Java程序设计实验项目
实验一熟悉Java程序开发环境
一、实验目的
1.了解和使用J2sdk1.5.0(JDK)集成环境。
包括Eclipse的安装
2.熟悉J2sdk集成环境的基本命令、功能和基本用法。
并学会配置path等环境变量
3.学习并熟练掌握使用J2SDK环境进Java程序开发的全过程(包括:
源程序的编辑、编译、调试、运行和结果查看)。
4.了解和掌握JCREATOR和Eclipse集成环境的安装,简单应用。
5.了解JavaApplication和Applet程序的基本结构。
6.了解Java程序文件名和类名的说明方法。
二、实验内容与要求
1.安装Jdk1.5.0集成环境,安装成功后,配置path,classpath路径,让用户在任何目录下均可用到Java的系统资源。
设置环境变量PATH和CLASSPATH(如果在autoexec.bat中没有进行设置)。
进入命令行(MS-DOS)方式,进行如下设置:
SETPATH=D:
\JDK1.5.0\BIN;%PATH%
SETCLASSPATH=.;%CLASSPATH%
2.安装Jdk1.5.0Doc,并查看Jdk1.5.0Doc文档中,和课堂教学有关系的部分。
在整个实验过程中都可以参考。
3.建立自己的工作目录如d:
\user。
以后的Java程序和过程文件均放置在此目录下。
4.输入一个Application源程序,学习编辑、编译、运行程序的方法。
//例1-1文件HelloWorldApp.java如下:
//HelloWorldApp.java
publicclassHelloWorldApp{
publicstaticvoidmain(Stringargs[]){
System.out.println(″HelloWorld!
″);
}
}
本程序的作用是输出下面一行信息:
HelloWorld!
现在我们可以运行该程序。
首先把它放到一个名为HelloWorldApp.java的文件中,这里,这文件名应和类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。
然后对它进行编译:
d:
\user>javacHelloWorldApp.java
编译的结果是生成字节码文件HelloWorldApp.class。
最后用java解释器来运行该字节码文件:
d:
\user>javaHelloWorldApp
结果在屏幕上显示HelloWorld!
三、思考题
1.什么是Java虚拟机?
它的作用是什么?
2.JavaApplication程序与JavaApplet程序的不同之处有那些?
请各位同学收集错误代码与提示信息,以及产生错误的原因。
3.列举出5种以上Java开发平台,分析他们的优缺点或特点。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告(打印或手写均可),在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验二简单数据类型和流程控制
一、实验目的
1.掌握Java语言的标识符和保留字,各简单数据类型变量以及有逻辑量意义数据的表示方法以及表示条件的表达式的类型。
2.掌握Java语言中具各种运算符表达式的基本知识。
3.熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。
4.熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。
5.熟练掌握while、do-while和for三种语句组成循环结构的基本方法。
熟练掌握特殊流程控制语句如break,continue,标号语句。
6.熟练掌握一维数组和二维数组的使用
7.把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题
二、实验内容与要求
1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
publicclassCh21
{
publicstaticvoidmain(Stringargs[])
{
charx,y,z;
x='K';
y='\\';
z='\117';
System.out.print(x);
System.out.print(y);
System.out.print(z);
}
}
2、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
publicclassCh22
{
publicstaticvoidmain(Stringargs[])
{
booleanx,y,z;
inta=12,b=24;
x=(a>b);
y=(a!
=b);
z=(a+b==36);
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("z="+z);
}
}
3、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
publicclassCh23{
publicstaticvoidmain(Stringargs[]){
intx,y,z=0;
for(x=1;x<=10;x++)
for(y=1;y<10;y++)
{
if(x==5)
continue;
if(y>5)
break;
z++;
}
System.out.println("z="+z);
}
}
4.设intyear,month,day分别表示一个日期中的年月日,试编程求
a)对于任意三个整数,判断其是否为一个合法的日期值。
b)给定一个日期值,计算若干天后的日期值
c)如果有两个日期值,计算他们相距的天数。
5.找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有鞍点。
)
6、编写一个程序,要求将一个浮点数强制转化成整型后再输出。
7.请计算出3至1000范围内最大的10个素数,放入数组中,并计算出其累加和。
8.水仙花数是三位数,它的各位数字的立方和等于这个三位数本身,例如:
371=33+73+13,371就是一个水仙花数。
找出所有水仙花数.
三、思考题
1.定义变量的作用是什么?
2.Java运算符的优先级与结合性是怎样的?
3.longl=121233;floatf=100.2323;
这两行代码在编译时有什么错误。
4.&和&&有什么区别?
5.break,continue在流程控制中的作用。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告(打印或手写均可),在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验三类、对象基础知识
一、实验目的
1、熟练掌握类、对象的的概念以及对事物的抽象。
2、熟练掌握成员、方法的概念以及构造方法的概念。
3、熟练掌握封装性,多态性的概念
4、理解面向对象的程序设计方法。
二、实验内容与要求
1.运行下面的程序,理解面向对象的程序设计方法的基本概念。
classvalue{
publicintx,y;
publicvalue(inta,intb){
x=a;y=b;
}
}
publicclassCh31{
publicstaticvoidmain(Stringargs[]){
inttotal;
valuenum=newvalue(24,65);
total=num.x+num.y;
System.out.println("add="+total);
}
}
2、定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"和”显示帐号”,。
定义主类,创建帐户类的对象,并完成相应操作。
提示:
关键代码如下:
publicintgetleftmoney(){
returnleftmoney;
}
publicvoidsavemoney(doublemoney){
leftmoney+=money;
}
publicvoidgetmoney(doublemoney){
if(money<=leftmoney)
leftmoney-=money;
else
System.out.println("只能取:
"+leftmoney);
}
…
bankaccountba=newbankaccount(888123,1000);
ba.savemoney(21000);
System.out.println("存入21000元后余额为:
"+ba.getleftmoney());
ba.getmoney(11500);
System.out.println("11500元后余额为:
"+ba.getleftmoney());
3.先创建一个Point类,然后定义Trianglele类。
在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,再定义一个方法setTri对这三个点进行初始化,然后定义两个方法求三角形的周长、面积。
在main()中创建一个对象,求给定三点的三角形的周长、面积。
3.将上题的方法setTri改用构造方法实现初始化。
4、编写JAVA程序求园柱体的表面积和体积,已知底面圆心p为(0,0),半径r为10,圆柱体高5。
三、思考题
1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?
这种变量称为什么?
方法的形式参数是否可以在方法之外使用?
2.为什么说构造函数是一种特殊的方法?
特殊在哪里?
构造函数什么时候执行?
被谁调用?
3.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?
4.同名的不同方法共存的情况称为什么?
如何区分这些同名方法?
5.定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告(打印或手写均可),在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验四抽象类、接口与包
一、实验目的
1、熟练掌握抽象类abstract的概念。
2、熟练掌握接口interface的概念。
3、熟练包package的概念以及编译运行的方法。
4、熟练掌握内部类innerclass的概念。
5、熟练掌握递归的概念。
6、理解面向对象的程序设计方法。
二、实验内容与要求
1.编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特点。
2、重写上面的程序,要求三角形,矩型,圆,多边型的类放到不同的包中,用包的技术组织程序的设计。
同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积。
提示:
从键盘上输入双精度数的一种方法(程序片段)
……
publicstaticvoidmain(Stringargs[])throwsIOException
{
BufferedReaderkeyin=newBufferedReader(newInputStreamReader(System.in));
Stringx;
x=keyin.readLine();
doublea=Double.parseDouble(x);
……
3.练习java.lang.Class类的使用,通过一个对象返回一个Class对象,如何获取一个类的名称,如何使用class生成一个类的对象。
获取类的描述信息。
4.从命令行输入一个正整数,用递归的方法求出每位数字上的累加和
三、思考题
1.定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。
2.内部类innerclass和外部类的区别?
3.抽象类和接口的区别?
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告(打印或手写均可),在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验五字符串处理及基础类库
一、实验目的
1、理解并掌握String类、StringBuffer类;
2、理解并掌握StringTokenizer类
3、掌握字符串与其他数据类型的转换
4、掌握Math类的使用。
5、了解和掌握集合框架类。
6、掌握JavaApplication命令行参数的使用
二、实验内容与要求
1.利用下面的关键代码编写一个完整的程序,理解Math类的使用。
System.out.println(Math.abs(-5.8));//5.8
System.out.println(Math.ceil(3.2));//4
System.out.println(Math.floor(3.8))//3
System.out.println(Math.round(3.8));//4
System.out.println(Math.round(3.2));//3
System.out.println(Math.min(3,2));//2
System.out.println(Math.max(Math.PI,4));//4
System.out.println(Math.log(7.0));//1.94591
System.out.println(Math.pow(7,2));//72----49
System.out.println(Math.exp(0.4));//1.49183
System.out.println(Math.IEEEremainder(10.0,3.0));//返回1
angle=0.785398;//以弧度为单位的角,π/4
System.out.println(Math.tan(angle));//返回该角的正切
System.out.println(Math.asin(0.707107));//返回反余弦
System.out.println("eis:
"+Math.e);//eis:
2.71828
System.out.println("πis:
"+Math.PI);//πis:
3.14159
System.out.println(Math.random());//产生0和1(不含1)之间的伪随机数
2.利用下面的关键代码编写一个完整的程序,理解String类的使用。
Strings=newString("ThisisandemooftheStringmethod.");
//Strings="ThisisandemooftheStringmethod.";
System.out.println("Length:
"+s.length());
System.out.println("SubString:
"+s.substring(11,15));
3.利用下面的关键代码编写一个完整的程序,理解StringBuffer类的使用。
StringBuffersb=newStringBuffer("HelloWorld!
");
sb.append("HelloJava!
");
sb.insert(12,"And");
System.out.println(sb);
System.out.println(sb.charAt(0));
sb.setCharAt(0,''h'');
System.out.println(sb.charAt(0));
System.out.println(sb);
4.使用JavaAplication的命令行参数读入两个数据,计算它们的和,然后将和输出。
如果参数的数目不足,显示相应提示信息并退出程序的执行。
三、思考题
1.算术运算应使用什么类?
2.Java中如何表示字符串?
3.JavaApplication如何定义和使用命令行参数?
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告(打印或手写均可),在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验六流式输入输出处理
一、实验目的
1、理解流的概念,流的划分
2、掌握文件描述,顺序处理,随机访问处理的方法;
3、能够熟练的使用过滤流;掌握字符流处理的方法;
4、理解对象串行化的概念和方法。
二、实验内容与要求
1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果,理解File类的使用。
importjava.io.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassCh71extendsFrame{
intn;
Stringdirname="/jdk1.4";
Filefile=newFile(dirname);
String[]flist=newString[100];
ChoicelistFile=newChoice();
TextFieldtf=newTextField();
publicCh71(){
setLayout(newBorderLayout(10,10));
flist=file.list();
for(n=0;nlistFile.addItem(flist[n]);
}
add("North",listFile);
add("South",tf);
setSize(250,200);
setVisible(true);
listFile.addItemListener(newkoListener());
addWindowListener(newkoWindowListener());
}
publicstaticvoidmain(Stringargs[]){
newCh71();
}
classkoListenerimplementsItemListener{
publicvoiditemStateChanged(ItemEvente){
Stringko=(String)e.getItem();
for(n=0;nif(ko==flist[n]){
Filef=newFile(file+System.getProperty("file.separator")+ko);
if(f.isFile()==true)
tf.setText(ko+"是个文件!
");
if(f.isDirectory()==true)
tf.setText(ko+"是个目录!
");
}
}
}
classkoWindowListenerextendsWindowAdapter{
publicvoidwindowClosing(WindowEvente){
dispose();
System.exit(0);
}
}
}
2、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
importjava.io.*;
publicclasstestRandom2{
publicstaticvoidmain(Stringargs[]){
try{
RandomAccessFilerf=newRandomAccessFile("rtest.dat","rw");
for(inti=0;i<10;i++){
rf.writeInt(i);
rf.writeDouble(i*1.414);
}
rf.close();
rf=newRandomAccessFile("rtest.dat","rw");
rf.seek(5*(4+8));
rf.writeInt(47);
rf.writeDouble(47.00021);
rf.close();
rf=newRandomAccessFile("rtest.dat","r");
for(inti=0;i<10;i++){
;
System.out.println("Value"+rf.readInt()+":
"+rf.readDouble());
}
rf.close();
}catch(IOExceptione){
System.out.println(e.toString());
}
}
}
3、定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"、”显示帐号”以及存储功能。
定义主类,创建帐户类的对象,并完成相应操作,要求能存储储户历史信息。
4、编写程序,能接收键盘输入的字符串,并将字符串的内容写入文件。
三、思考题
1、InputStream和OutputStream的基本方法是什么?
2、DataOutputStream类的常用方法。
3、Ascii编码和Unicode编码的区别?
5.字符流和字节流的区别是什么?
6.对文件进行读写操作的过程是什么?
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告(打印或手写均可),在下一次上实验课时提交。
3、评出成绩,按五级(A,B,C,D、E)评分。
实验七线程
一、实验目的
1.线程的概念、线程的生命周期。
2.多线程的编程:
继承Thread类与使用Runnable接口。
3.使用多线程机制实现动画。
4.处理简单的多线程互斥和同步;
二、实验内容与要求
1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
publicclassCh81extendsThread{
intn;
Ch81(){
Threadtd=newThread(this);
td.start();
}
publicvoidrun(){
for(n=0;n<6;n++){
try{
System.out.print(n);
Thread.sleep(500);
}
catch(InterruptedExceptione){
System.out.println("Exception");
}
}
}
publicstaticvoidmain