admin 管理员组

文章数量: 1087135


2024年1月11日发(作者:电脑进程的快捷键)

Java实验指导书

实验一:Java语言综述

一、实验目的与要求

1、熟悉安装和配置JDK开发环境。

2、熟悉安装和配置IDE开发工具。

3、掌握Java程序编辑、编译和运行的过程。

4、掌握Java程序的构成特点。

5、总结在调试过程中的错误。

二、实验类型

验证型

三、实验原理及说明

通过实际操作,使学生对Java语言的使用有一个更深刻的理解;熟悉Java的开发环境及程序结构。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

1、下载、安装并设置 Java SDK 软件包。

2、安装 Java IDE软件。

3、编写一个简单的 Java 程序,运行结果为在屏幕上输出“HELLO WORLD!”。

public class Hello{

public static void main(String args[]){

n("HELLO WORLD!");

}

}//4、编写一个Java Applet程序实现功能为:在屏幕上显示“HELLO WORLD!”。

六、注意事项

Java源程序文件的命名规则。

七、预习与思考题

1、什么是Java虚拟机?它的作用是什么?

2、如何在不同的环境下设置环境变量?

林 玲

实验二:Java语言基础

一、实验目的与要求

1、掌握 Java 基本数据类型、运算符与表达式、数组和字符串的使用方法。

2、掌握各种变量的声明方式。

3、理解 Java 程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。

4、通过以上内容,掌握 Java 语言的编程规则。

5、了解Java程序文件名和类名的说明方法。

二、实验类型

设计型

三、实验原理及说明

Java语言基础包括数据类型、运算符、表达式、流程控制、数组、字符串等,是类内方法设计实现的基础。面向对象程序设计的核心是类和类内方法的设计,其中类内方法的设计依然需要传统的面向过程的方法进行。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

1、编写声明不同数据类型变量的程序文件 Java2_,源代码如下:

public class Java2_1{

public static void main(String args[]){

byte b=0x55;

short s=0x55ff;

int i=1000000;

long l=0xffffL;

char c='a';

float f=0.23F;

double d=0.7E-3;

boolean B=true;

String S="这是字符串类数据类型";

n("字节型变量 b = "+b);

n("短整型变量 s = "+s);

n("整型变量 i = "+i);

n("长整型变量 l = "+l);

n("字符型变量 c = "+c);

n("浮点型变量 f = "+f);

n("双精度变量 d = "+d);

n("布尔型变量 B = "+B);

n("字符串类对象 S = "+S);

}

}

编译并运行该程序。

2、建立 Java2_ 文件,通过本程序了解变量的使用范围,源代码如下。

public class Java2_2{

static int i=10;

public static void main(String args[]){

{

int k=10;

n("i="+i);

n("k="+k);

}

n("i="+i);

n("k="+k); //编译时将出错,已出k的使用范围

}

}

编译 Java2_,此时会出现错误提示。因为变量 k 在方法块中声明,在方法块之外它是不存在的,所以编译时会出错。

修改上面的程序,并成功运行该程序。

3、编程采用冒泡法实现对数组元素由小到大排序,冒泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。

提示:关键代码如下:

for(i=0;i<-1;i++)

for(j=i+1;j<;j++)

if (intArray[i]>intArray[j]){

t=intArray[i];intArray[i]=intArray[j];intArray[j]=t;}

4、数组选做实验:利用数组解决约瑟夫环问题。设有n个人围做一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m报数,报数到第m的人出圈,再从其下一个人重新开始从1到m的报数,如此进行下去知道所有的人都出圈为止。给出这n个人出圈的顺序。

5、运行下面的程序,理解String类常用方法的使用。

public class 2_4{

public static void main (String args[]){

String str=”I like java programming”;

int i1=f(‘J’);

String s1=ing(i1);

String s2=ing(i1,i1+4);

int i2=dexOf(‘J’);

String s3=ing(i2+5);

n("s1="+s1);

n("s2="+s2);

n("s3="+s3);

}

}

六、注意事项

Java语言中的数组与C语言中的数组差别。

七、预习与思考题

1、定义变量的作用是什么?

2、&和&&有什么区别?

3、break和continue在流程控制中的作用是什么?

实验三:面向对象编程

一、实验目的与要求

1、理解 Java 语言是如何体现面向对象编程基本思想。

2、了解类的封装方法,以及如何创建类和对象。

3、掌握成员变量和成员方法的特性及构造方法和析构方法的使用。

4、熟练掌握 OOP 方式进行程序设计的方法,理解类的继承性和多态性的作用。

二、实验类型

设计型

三、实验原理及说明

Java语言中引入了类,因此在程序设计中可以把数据及对数据的操作封装在一起;类可以从其他类中继承数据和方法。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

1、定义一个“圆”类Circle,该圆类的数据成员包括:圆心点位置及圆的半径;方法成员有:设置圆心位置和半径的方法,获取圆心位置和半径的方法及构造方法。要求构造方法可以接收圆心位置参数,而半径使用缺省值1。编写完整的程序并创建Circle类的对象,并且分别调用各种方法,对比这些方法的执行结果,并据此写出详细的实验报告。

2、定义以上圆类Circle的子类SubCircle,使它具有获取半径方法、设置半径方法和构造方法,要求构造方法可同时接收圆心位置及半径两个参数。编写完整的程序并创建SubCircle类的对象,并且分别调用各种方法,对比这些方

3、多态在工资系统中的应用。下面给出一个根据雇员类型利用多态性完成工资单计算的程序。定义一个类Employee作为超类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。对所有雇员类型都使用earnings()方法完成其工资单的计算,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派出生的。所以在超类中声明earnings()方法,该方法没有实质性工作,而是在每个子类都提供恰当的earnings()方法的重写。为了计算雇员的工资,程序仅使用雇员对象的一个超类引导并调用earnings()方法。

//Employee超类的定义

class Employee{

private String firstName;

private String lastName;

public Employee(String first,String last){

firstName=first;

lastName=last;

}

public String getEmployeeName(){

return firstName;

}

public String getLastName(){

return lastName;

}

public String toStrings(){

return firstName+' '+lastName;

}

public double earnings(){

n("Employ's salary is 0.0");

return 0.0;

}

}

//定义Boss类,为Employee的子类

class Boss extends Employee{

private double weeklySalary;

public Boss(String first,String last,double s){

super(first,last);

setWeeklySalary(s);

}

public void setWeeklySalary(double s){

weeklySalary=(s>0?s:0);}

public double earnings(){

return weeklySalary;

}

public String toStrings(){

return "Boss: "+ngs();

}

}

//定义PieceWorker类,为Employee的子类

class PieceWorker extends Employee{

private double wagePiece;

private int quantity;

public PieceWorker(String first,String last,double w,int q){

super(first,last);

setWage(w);

setQuantity(q);

}

public void setWage(double w){

wagePiece=(w>0?w:0);

}

public void setQuantity(int q){

quantity=(q>0?q:0);

}

public double earnings(){

return quantity*wagePiece;

}

public String toStrings(){

return "PieceWoeker: "+ngs();

}

}

//定义HourlyWorker类,为Employee的子类

class HourlyWorker extends Employee{

private double wage;

private double hours;

public HourlyWorker(String first,String last ,double w,double h) {

super(first,last);

setWage(w);

setHours(h);

}

public void setWage (double w){

wage=(w>0?w:0);

}

public void setHours(double h){

hours=(h>=0&&h<168?h:0);

}

public double earnings(){

return wage*hours;

}

public String toStrings(){

return "HourlyWorker: "+ngs();

}

}

public class TestEmployee{

public static void main(String args[ ]){

//使用超类声明ref

Employee ref; String out="";

//分别定义各子类

Boss b=new Boss("Hohn","Smith",800.00);

PieceWorker p=new PieceWorker("Bob","Lewis",2.5,200);

HourlyWorker h=new HourlyWorker("Karen","price",13.75,40);

//使用子类分别实例化

ref=b;

out+=ngs()+"earned

$"+gs()+"n"+ngs()+

" earned $"+gs()+"n";

(out);

ref=p;

out+=ngs()+"earned

$"+gs()+"n"+ngs()+

" earned $"+gs()+"n";

(out);

ref=h;

out+=ngs()+"earned

$"+gs()+"n"+ngs()+

" earned $"+gs()+"n";

(out);

}

}

六、注意事项

子构造方法的使用。

七、预习与思考题

1、如何继承一个类?

2、为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用?

3、同名的不同方法共存的情况称为什么?如何区分这些同名方法?

实验四:Java类和对象的高级特征

一、实验目的与要求

1、掌握接口的编写及使用。

2、理解抽象类与最终类。

3、掌握包的编写以及如何使用包中的类。

二、实验类型

设计型

三、实验原理及说明

接口借助于类来实现,Java语言利用接口来实现多态性;Java包的机制。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

1、接口的编写

⑴ 编写一个接口myInterface。

interface myInterface{

int i=4;

int k=5;

void myFunc1();

int myFunc2(int x);

}

⑵ 编写一个用于实现接口myInterface的类UseInterface。

class UseInterface implements Interfaceclass{

int j;

public void myFunc1(){

//在使用接口的类中一定要实现接口中的所有抽象方法

n(“myFunc1=”+1); }

public int myFunc2(int i){

n(“func2=”+1); return i;

}

public static void main(String srgs[]){

UseInterface x = new UseInterface();

1();

2(k);

}

}

2、抽象类和最终类的使用

⑴ 定义一个抽象类Shape用于描述图形,具有“名称”(name)属性以及计算其面积和周长的两个抽象方法GetArea()和GetLength()。定义一个最终类Circle继承自类Shape,增加了一个描述半径的属性radius及带参的构造函数用于该类对象的初始化操作,同时实现了Shape类中的两个抽象方法来计算圆的面积和周长。定义一个最终类Rectangle继承自类Shape,增加了两个属性length和width用于描述矩形的长和宽及带参的构造函数用于完成对该类对象的初始化,同时实现了Shape类中的两个抽象方法来计算矩形的面积和周长。

⑵ 重写上面的程序,要求三将Circle类和Rectangle类放到不同的包中,用包的技术组织程

序的设计。同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积。

六、注意事项

一个类用于实现某个接口的话则必须实现该接口中的所有方法。

七、预习与思考题

1、内部类inner class和外部类的区别?

2、抽象类和接口的区别?

实验五:图形用户界面的设计

一、实验目的与要求

掌握GUI编程中的主要概念:AWT,Swing,窗口、面板,容器布局,布局管理器。掌握GUI编程。掌握事件编程机制。

二、实验类型

设计型

三、实验原理及说明

图形用户界面是应用程序与用户交流的图形接口,由各种不同的组件按照一定的布局模式排列组成的,如菜单、按钮、标签等,与这些组件配合工作的还有一些相关的事件。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

1、编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。

2、编程包含一个单选按钮组和一个普通按钮,单选按钮组中包含三个单选,文本说明分别为“普通”、“黑体”和“斜体”。选择文本标签为“普通”的单选按钮时,普通按钮中的文字为普通字体,选择文本标签为“黑体”的单选按钮时,普通按钮中的文字的字体为黑体,选择文本标签为“斜体”的单选按钮时,普通按钮中的文字的字体为斜体。

3、编程确定当前鼠标的位置坐标。

4、编程使用BorderLayout布局方式放置5个按钮。

六、注意事项

通过接口来完成事件处理时,应实现接口中的所有方法。

七、预习与思考题

1、Java的事件处理机制是怎样

2、若一个数据只有两种取值可能,采用哪种组件表示比较合适?如果有二种到三种取值可能,采用哪种合适?如果取值的可能大于5个,采用哪种组件合适?

实验六:Java Applet的编写

一、实验目的与要求

1、掌握Java Applet程序结构和开发过程。

2、了解Applet运行机制。

3、学会编写Applet对应的HTML文件,掌握从HTML文件向Applet传递参数的方法。

4、了解Applet与浏览器的通信。

5、掌握Applet图形界面设计。

二、实验类型

设计型

三、实验原理及说明

学习编辑、编译、运行Applet程序的方法。在Applet程序中没有实现main()方法,这是Applet与应用程序Application的区别之一。由于Applet中没有main()方法作为Java解释器的入口,所以必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。通过程序的运行掌握Applet的生命周期。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

1、Applet程序的生命周期。

import .*;

import .*;

public class AppLife extends Applet{

static int a,b,c,d;

int x1=150,y1=50,x2=300,y2=50;

public void paint (Graphics g){

ne(x1,y1,x1,y2);//x1->x2

ne(x1,y1,x1,y1+a);

ring ("init",x1,y1);

ne(x1+50,y1,x1+50,y1+b);

ring("start",x1+50,y1);

ne(x1+100,y1,x1+100,y1+c);

ring("stop",x1+100,y1);

ne(x1+150,y1,x1+150,y1+d);

ring("destory",x2,y2);

}

public void init(){

a+=50; repaint();

}

public void start(){

b+=50; repaint();

}

public void stop()

}

2、编写一个小应用程序,由HTML文件向其传递参数。要求把HTML文件中设置的两组

数据(“Susan”,85)和(“Jeff”,96)传递给Applet并在浏览器中显示。

六、注意事项

Applet的生命周期。

七、预习与思考题

1、构造方法、start()方法和init()方法谁先被执行?

2、Applet如何与网页中其他对象通信?

实验七:输入/输出流

一、实验目的与要求

1、了解文件的概念和文件对象的创建方法。

2、了解FileInputStream和FileOutoutStream的基本概念。

3、学会创建文件输入输出流。

4、掌握使用文件输入输出流读写文件的方法。

二、实验类型

设计型

三、实验原理及说明

1、使用文件输入类FileReader 必须将文件内容全部读入。如果要选择读入文件的内容,可使用随机文件类RandomAccessFile。

2、使用数据输入流DataOutputStream 和数据输出流DataInputStream 可以读取或写入任何Java 类型的数据,不用关心它们的实际长度是多少字节。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

编程将保存在本地机当前文件夹中的文本文件的内容在屏幕上显示出来,然后将其另存为 文件。

六、注意事项

DataOutputStream类的常用方法。

七、预习与思考题

1、Ascii编码和Unicode编码的区别?

2、字符流和字节流的区别是什么?

实验八:异常处理

一、实验目的与要求

1、掌握异常的概念和 Java 异常处理机制。

2、掌握异常的定义、抛出和捕捉处理。

二、实验类型

设计型

三、实验原理及说明

异常是指程序运行中突然引发的非常事件。异常可以是某个需要特别处理的应用程序中多种因素引发的事件。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

编写使用 try…catch 语句处理异常的程序文件,并给出程序的运行结果。

六、注意事项

注意catch模块的顺序。

七、预习与思考题

1、异常分为哪两类?

2、如果申明int a[]=new int[-10];应属于那类异常?

3、比较throw和throws两者的用法上的区别。

实验九:网络程序设计

一、实验目的与要求

1、掌握TCP与UDP编程:Socket与Datagram的概念和编程方法。

2、掌握URL类的使用:URL的概念和编程。

二、实验类型

设计型

三、实验原理及说明

Java中有许多与网络通信有关的类和接口,利用它们可以方便地实现网上资源的定位和获取,以及实现计算机之间的通信和文件的传输。

四、实验仪器

安装JDK及Java IDE的计算机若干台

五、实验内容和步骤

1、客户端每次向服务器发送一个“1244171,java,98”的字符串,表示学号、课程和成绩,直到客户端发出bye中断通讯。

2、使用socket和UDP编写客户方和服务器方之间的通讯的程序,实现Server与Client之间的数据交换。

六、注意事项

Socket的通信机制和数据报通信机制的区别。

七、预习与思考题

1、什么是URL?一个URL地址由哪些部分组成?

2、流式Socket的通信机制的最大特点是什么?

3、数据报通信有何特点?


本文标签: 方法 程序 实验 使用 文件