java实验指导书.docx
《java实验指导书.docx》由会员分享,可在线阅读,更多相关《java实验指导书.docx(20页珍藏版)》请在冰豆网上搜索。
![java实验指导书.docx](https://file1.bdocx.com/fileroot1/2023-1/6/5eb23d27-1ecd-403c-91e3-30b799fdebeb/5eb23d27-1ecd-403c-91e3-30b799fdebeb1.gif)
java实验指导书
Java程序设计实验指导书
2008年9月
目录
实验一熟悉Java程序开发环境3
实验二简单数据类型和流程控制4
实验三类、对象基础知识6
实验四抽象类、接口与包7
实验五数组8
实验六字符串处理及基础类库9
实验七异常处理与线程应用10
实验八流式输入输出处理12
实验九用户图形界面GUI标准组件及事件处理15
实验十Java网络编程技术16
实验十一数据库编程17
实验一熟悉Java程序开发环境
一、实验目的
1.了解和使用J2sdk1.5.0(JDK)集成环境。
2.熟悉J2sdk集成环境的基本命令、功能和基本用法。
并学会配置path等环境变量
3.学习并熟练掌握使用J2SDK环境进行Java程序开发的全过程(包括:
源程序的编辑、编译、调试、运行和结果查看)。
4.了解和掌握Eclipse集成环境的安装、进行Java程序开发的全过程(包括:
源程序的编辑、编译、调试、运行和结果查看)。
5.了解JavaApplication程序的基本结构。
6.了解Java程序文件名和类名的说明方法。
二、实验内容与要求
1.安装Jdk1.5.0集成环境,安装成功后,配置path,classpath路径,让用户在任何目录下均可用到Java的系统资源。
2.建立自己的工作目录如d:
\user。
以后的Java程序和过程文件均放置在此目录下。
3.输入一个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!
5.安装Eclipse软件,并配置Eclipse,在Eclipse中用建立工程的方式重新运行上面的3小题。
三、思考题
1.什么是Java虚拟机?
它的作用是什么?
2.JavaApplication程序与JavaApplet程序的不同之处有那些?
请各位同学收集错误代码与提示信息,以及产生错误的原因。
3.列举出5种以上Java开发平台,分析他们的优缺点或特点。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验二简单数据类型和流程控制
一、实验目的
1.掌握Java语言的标识符和保留字,各简单数据类型变量以及有逻辑量意义数据的表示方法以及表示条件的表达式的类型。
2.掌握Java语言中具各种运算符表达式的基本知识。
3.熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。
4.熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。
5.熟练掌握while、do-while和for三种语句组成循环结构的基本方法。
熟练掌握特殊流程控制语句如break,continue,标号语句。
6.把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题
二、实验内容与要求
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、编写一个程序,要求将一个浮点数强制转化成整型后再输出。
5、编写一个Java程序,要求把一个浮点数强制转化成整型后再输出。
6、编写一个Java程序,求有10个元素的一维整型数组的平均值并输出。
7、编写一个Java程序,求1!
+3!
+5!
+……+9!
的值,并输出结果。
8、编写一个Java程序,用来计算汇款额。
如果汇款额小于100元,则收取1元的费用。
如果汇款额大于100元而小于5000元,则按汇款额除以100作为收取的费用。
如果汇款额大于5000元,则收取50元的费用。
三、思考题
1.定义变量的作用是什么?
2.longl=121233;floatf=100.2323;
这两行代码在编译时有什么错误。
3.&和&&有什么区别?
4.break,continue在流程控制中的作用。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验三类、对象基础知识
一、实验目的
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()中创建一个对象,求给定三点的三角形的周长、面积。
4.将上题的方法setTri改用构造方法实现初始化。
5.编写JAVA程序求园柱体的表面积和体积,已知底面圆心p为(0,0),半径r为10,圆柱体高5。
三、思考题
1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?
这种变量称为什么?
方法的形式参数是否可以在方法之外使用?
2.为什么说构造函数是一种特殊的方法?
特殊在哪里?
构造函数什么时候执行?
被谁调用?
3.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?
4.同名的不同方法共存的情况称为什么?
如何区分这些同名方法?
5.定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验四抽象类、接口与包
一、实验目的
1、熟练掌握抽象类abstract的概念。
2、熟练掌握接口interface的概念。
3、熟练包package的概念以及编译运行的方法。
4、熟练掌握递归的概念。
5、理解面向对象的程序设计方法。
二、实验内容与要求
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.抽象类和接口的区别?
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验五数组
一、实验目的
1、掌握数组的声明、初始化、调用等。
2、熟练掌握和运用数组来解决实际问题。
二、实验内容与要求
1、输出1000以内能被17和23整除的所有整数
2、输出
A
BC
DEF
HIJK
LMNO
PQR
RS
T
3、3个整数中选取最大值和最小值
4、20长度的数组,一次赋值1~20,计算数组下标为奇数的元素之和
5、比较两个数组arr1={2,4,6,8,10}和arr2={3,5,7,9,11,13,15,17}长度,然后用长度短的覆盖长度长的前几项,输出到屏幕上。
7、计算二维数组各个元素的和,arr数组有3行4列。
三、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验六字符串处理及基础类库
一、实验目的
1、理解并掌握String类、StringBuffer类;
2、掌握字符串与其他数据类型的转换
3、掌握Math类的使用。
二、实验内容与要求
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.求英文单词的总数、最长的单词长度和最短的单词长度。
5、编写一个Java应用程序,要求将字符串中的小写字母变为大写字母,并将大写字母变成小写字母。
6、编写一个Java应用程序,将一个字符串数组按字典顺序重新排列。
7、编写一个Java程序,统计并输出字符串中单词的个数。
三、思考题
1.算术运算应使用什么类?
2.Java中如何表示字符串?
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验七异常处理与线程应用
一、实验目的
1.线程的概念、线程的生命周期。
2.多线程的编程:
继承Thread类与使用Runnable接口。
3.处理简单的多线程互斥和同步;
4.理解什么是例外
5.掌握java的例外处理机制和方法
二、实验内容与要求
1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果
mportjava.io.*;
publicclassCh61{
publicstaticvoidmain(Stringargs[])throwsIOException{
int[]ko=newint[15];
intn,a;
Stringx;
BufferedReaderkeyin=newBufferedReader(newInputStreamReader(System.in));
System.out.print("Enteraninteger:
");
x=keyin.readLine();
n=Integer.parseInt(x);
try{
a=110/n;
ko[15]=100;
System.out.println("此描述无法执行!
");
}catch(ArithmeticExceptione){
System.out.println("除数为0的错误");
}catch(ArrayIndexOutOfBoundsExceptionf){
System.out.println("数组索引值大于数组长度的错误!
");
}
System.out.println("执行完catch的描述!
!
!
");
}
}
2.运行下面的程序,自己给出程序的运行结果。
importjava.io.*;
publicclassCh62{
publicCh62(){
try{
inta[]=newint[2];
a[4]=3;
System.out.println("Afterhandlingexceptionreturnhere?
");
}catch(IndexOutOfBoundsExceptione){
System.err.println("exceptionmsg:
"+e.getMessage());
System.err.println("exceptionstring:
"+e.toString());
e.printStackTrace();
}finally{
System.out.println("-------------------");
System.out.println("finally");
}
System.out.println("Noexception?
");
}
publicstaticvoidmain(Stringargs[]){
newCh62();
}}
3.仔细读下面的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(Stringargs[]){
newCh81();
}}
4.将插入、冒泡排序算法设计成算法,启动两个以上不同的线程同时运行,计算不同排序的运行时间。
三、思考题
1.下面程序在编译时会出现什么错误?
importjava.io.*;
classExceptionDemo1{
publicstaticvoidmain(Stringargs[]){
FileInputStreamfis=newFileInputStream(“text.dat”);
intb;
while(b=fis.read())!
=-1{
System.out.print(b);
}
fis.close();
}
}
2.异常分为哪两类?
3.如果申明inta[]=newint[-10];应属于那类异常
4.比较throw和throws两者的用法上的区别。
5.本实验的实验内容2中,finally程序块的作用是什么?
6.简述多线程互斥和同步的概念
7.简述并区分程序、进程和线程三个概念。
8.线程有哪几个基本的状态?
Java中线程调度遵循何种原则?
9.实现多线程可以用哪两种基本方法?
将这两种方法进行比较。
四、实验报告
1、实验完成后,检查是否达到试验目的。
2、编写实验报告,在下一次上实验课时提交。
实验八流式输入输出处理
一、实验目的
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];
Choic