《Java程序设计》实验指导书 下载本文

interface Instrumentvoid play();String what();void adjust();implementsWindvoid play()String what()void adjust()implementsPercussionvoid play()String what()void adjust()implementsStringedvoid play()String what()void adjust()extendsWoodwindvoid play()String what()extendsBrassvoid play()void adjust()2. 已知有两个接口如下所示,要求定义一个类,其中包含两个内部类,这两个内部类

分别实现这两个接口,且设为private,在类中分别定义两个方法,可以返回这两个接口。

public interface Destination { String readLabel(); }

public interface Contents { int value(); }

实验五、异常的处理机制

一、实验目的

1)掌握异常的声明 2)掌握异常的抛出 3)掌握异常的捕获

4)掌握自定义异常的使用

二、实验内容

1.编写一段Java程序,在被调用方法中抛出一个异常对象,并将异常交给调用它的方法来处理

2.编写一段Java程序,创建一个自定义异常类,并在一个方法中抛出自定义异常对象,在该方法的catch处理程序中捕获它并重新抛出,让调用它的方法来处理。

实验六、多线程编程

一、实验目的

1)了解多线程的定义

2)理解多线程的互斥和同步 3)掌握多线程的调度和控制 二、实验内容

1.使用Runnable接口实现以下类的功能: public class testThread extends Thread{ public testThread(){} public void run(){

System.out.println(\方法运行....\ }

public static void main(String arg[]){ testThread t=new testThread();

System.out.println(\开始运行...\ t.start(); } }

2.假设一个银行的ATM机,它可以允许用户存款也可以取款。现在一个账户上有存款200元,用户A和用户B都拥有在这个账户上存款和取款的权利。用户A将存入100元,而用户B将取出50元,那么最后账户的存款应是250元。 实际操作过程如下:

? 先进行A的存款操作:

(1) 得到账户的存款数额200,耗时2s。 (2) 将账户数额增加100,耗时忽略不计

(3) 将新生成的账户结果300返回到ATM机的服务器上,耗时2s ? 在进行B的取款操作:

(4)得到增加后账户存款数额300,耗时2s。 (5)将账户数额减少50,耗时忽略不计。

(6)将新生成的账户结果250返回到ATM机的服务器上,耗时2s。 请同学们根据以上要求,编写一个Java程序实现该功能 注:将A的操作和B的操作分别用线程来表示

3.如下是消费者和生产者的一个简化例子,将次程序看懂,然后写下运行结果。

//CubbyHole.java 存储数据

public class CubbyHole { private int contents;

private boolean available = false;

public synchronized int get() { while (available == false) { try {

wait();

} catch (InterruptedException e) { } }

System.out.println(\ available = false; notifyAll(); return contents; }

public synchronized void put(int value) { while (available == true) { try {

wait();

} catch (InterruptedException e) { } }

System.out.println(\ contents = value; available = true; notifyAll(); } }

// Producer.java 生产者

public class Producer extends Thread { private CubbyHole cubbyhole;

public Producer(CubbyHole c) { cubbyhole = c; }

public void run() {

for (int i = 0; i < 10; i++) { cubbyhole.put(i); } } }

// Consumer.java 消费者

public class Consumer extends Thread { private CubbyHole cubbyhole;

public Consumer(CubbyHole c) { cubbyhole = c; }

public void run() { int value = 0;

for (int i = 0; i < 10; i++) { value = cubbyhole.get(); } } }

//测试程序

public class ProducerConsumerTest {

public static void main(String[] args) { CubbyHole c = new CubbyHole(); Producer p1 = new Producer(c); Consumer c1 = new Consumer(c);

p1.start(); c1.start(); } }

实验七、输入输出字节流

一、实验目的

1)、掌握输入字节流的操作

2)、掌握输出字节流的操作 二、实验内容

1.定义一个字节数组,将其输出到屏幕上 2.将一个图片的内容读取到字节数组当中

实验八、输入输出字符流

一、实验目的

1)、掌握输入字符流的操作 2)、掌握输出字符流的操作

二、实验目的

1.从键盘输入一串字符,将其输出到屏幕上 2.将一个文本文件输出到屏幕上

实验九、文件及其文件流

一、实验目的 1)、掌握文件的操作 2)、掌握文件输入流的操作

3)、掌握文件输出流的操作 二、实验内容

1.使用对象的串行化机制,使用RandomAccessFile构造一个应用程序能够随机存取文件的记录,可显示、修改记录的内容。撰写一个StoreDirList类,令其构造函数可以接收文件路径,并能够产生该路径下的所有文件的名称列表。

2.用DataInputStream输出一个整型数,一个双精度数和一个字符串到文件中,然后用DataOutputStream将这些文件读入并打印到标准输出设备。

实验十、Swing容器及其组件

一、实验目的

1)、掌握容器的属性与方法

2)、掌握Swing不同组件的属性与方法 二、实验内容

1.应用按钮、单选按钮、复选框、文本组件等Swing组件设计一个安装程序的对话框界面

实验十一、布局管理器

一、实验目的

1)、掌握布局管理器的类型

2)、掌握布局管理器的使用方法 二、实验内容

1.应用布局方法设计一个手机的界面

实验十二、事件处理

一、实验目的

1)、掌握事件处理模型

2)、能够用程序实现事件处理

3)、掌握使用内部类的方法处理事件