Java实验指导书.docx

上传人:b****5 文档编号:7283064 上传时间:2023-01-22 格式:DOCX 页数:75 大小:50.84KB
下载 相关 举报
Java实验指导书.docx_第1页
第1页 / 共75页
Java实验指导书.docx_第2页
第2页 / 共75页
Java实验指导书.docx_第3页
第3页 / 共75页
Java实验指导书.docx_第4页
第4页 / 共75页
Java实验指导书.docx_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

Java实验指导书.docx

《Java实验指导书.docx》由会员分享,可在线阅读,更多相关《Java实验指导书.docx(75页珍藏版)》请在冰豆网上搜索。

Java实验指导书.docx

Java实验指导书

 

Java程序设计

实验指导书

 

湖南科技学院

 

前言

一、上机实验目的

上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解Java

语言的基本结构和程序设计方法。

通过亲手编程掌握Java语言编程的方法。

二、实验基本内容

为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了10个实验。

学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。

指导书中的10个实验如下。

1.面向对象编程练习。

2.包、接口与异常处理(exception)。

3.数组、向量和字符串。

4.常用系统类的使用。

5.建立图形用户界面。

6.图形与多媒体处理。

7.综合练习。

8.流与文件。

9.多线程。

10.网络编程

三、实验任务与时间安排

《Java语言》是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外用相关技术进行编程练习。

《Java语言》上机实验时间为36学时,分为两大部分:

Java基础、Java核心。

具体实践课时安排如下:

模块

实验序号

知识点

实践课时

备注

Java基础

1

面向对象编程练习

4

2

包、接口与异常处理(exception)

2

3

数组、向量和字符串

4

4

常用系统类的使用

2

5

流与文件

4

6

多线程

4

7

建立图形用户界面

2

Java

核心

8

图形与多媒体处理

4

9

综合练习

2

10

网络编程

8

合计

36

目录

前言1

一、上机实验目的1

二、实验基本内容1

三、实验任务与时间安排1

目录3

实验1面向对象编程练习6

一、实验目的6

二、实验要求6

三、实验内容6

(一)创建Applet应用小程序6

(二)创建对象并使用对象7

(三)编写显示当前日期和时间的程序9

(四)使用修饰符10

(五)方法中参数传递的练习11

(六)类的继承性练习12

(七)类的多态性练习14

四、思考题17

实验2包、接口与异常处理(exception)18

一、实验目的18

二、实验要求18

三、实验内容18

(一)了解并使用Java的系统包18

(二)创建并使用自定义包18

(三)使用接口技术20

(四)了解异常处理机制21

实验3数组、向量和字符串23

一、实验目的23

二、实验要求23

三、实验内容23

(一)使用数组23

(二)使用向量类25

(三)使用字符串与字符串类26

实验4常用系统类的使用27

一、实验目的27

二、实验要求27

三、实验内容27

(一)了解Applet的生命周期27

(二)使用数学函数类28

(三)使用日期类29

实验5建立图形用户界面32

一、实验目的32

二、实验要求32

三、实验内容32

(一)创建图形用户界面32

(二)了解事件处理机制34

(三)建立独立运行的窗口界面并使用匿名类36

(四)使用Swing组件40

(五)使用自定义对话框与内部类42

实验6图形与多媒体处理46

一、实验目的46

二、实验要求46

三、实验内容46

(一)使用图形类Graphics46

(二)插入图像与播放音乐48

实验7综合练习50

一、实验目的50

二、实验要求50

三、实验内容50

(一)幻灯机效果——连续显示多幅图像50

(二)使用滚动条改变背景颜色51

(三)Applet与Application合并运行52

(四)创建电闪雷鸣的动画53

实验8流与文件56

一、实验目的56

二、实验要求56

三、实验内容56

(一)使用标准数据流的应用程序56

(二)使用文件输入输出流的应用程序57

(三)使用随机文件类的应用程序57

(四)使用数据输入输出流与文件输入输出流类的应用程序58

(五)使用对象输入输出流的应用程序59

实验9线程62

一、实验目的62

二、实验要求62

三、实验内容62

(一)Thread子类的方法实现多线程62

(二)实现Runnable接口的方法实现多线程63

四、思考题64

实验10网络编程65

一、实验目的65

二、实验要求65

三、实验内容65

(一)使用InetAddress类的方法65

(二)Socket编程65

(三)UDP编程65

(四)获取URL信息66

(五)利用URL类获取网络资源66

(六)利用URLConnection对URL资源的读取67

(七)掌握URLConnection对URL资源的写入67

四、思考题68

实验1面向对象编程练习

一、实验目的

通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP方式进行程序设计的方法,了解类的继承性和多态性的作用。

二、实验要求

1.编写一个体现面向对象思想的程序。

2.编写一个创建对象和使用对象的方法的程序。

3.编写一个显示当前日期和时间的程序。

4.编写不同成员变量修饰方法的程序。

5.编写不同成员方法修饰方法的程序。

6.编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。

7.编写体现类的多态性(成员方法重载、构造方法重载)的程序。

三、实验内容

(一)创建Applet应用小程序

1.创建一个Applet应用程序KY3_1.java文件。

(1)程序功能:

建立一个Applet小程序,使其可以进行简单的加法运算。

该程序要包含类、接口、属性、方法、事件等面向对象的基本元素。

(2)程序源代码如下。

importjava.awt.*;

importjava.awt.event.*;

importjava.applet.Applet;

publicclassKY3_1extendsAppletimplementsActionListener{

Labellabel1=newLabel("+");

Labellabel2=newLabel("=");

TextFieldfield1=newTextField(6);

TextFieldfield2=newTextField(6);

TextFieldfield3=newTextField(6);

Buttonbutton1=newButton("相加");

publicvoidinit(){//初始化

add(field1);

add(label1);

add(field2);

add(label2);

add(field3);

add(button1);

button1.addActionListener(this);

}

publicvoidactionPerformed(ActionEvente){//处理按钮事件

intx=Integer.parseInt(field1.getText())+Integer.parseInt(field2.getText());

field3.setText(Integer.toString(x));//数值转换为字符串

}

}

2.编写一个浏览Applet应用程序的页面文件KY3_1.HTML,源代码如。

3.将KY3_1.java源程序编译为KY3_1.class文件

4.使用浏览器或使用小程序查看器浏览KY3_1.HTML文件(即在命令提示符窗口输入:

appletviewerKY3_1.HTML),运行。

(二)创建对象并使用对象

1.编写Applet程序

♦程序功能:

这个Applet程序要在页面上输出两个矩形,并伴有文字输出。

♦KY3_2.java程序的源代码如下。

importjava.awt.*;

importjava.applet.Applet;

publicclassKY3_2extendsApplet{

MyBoxb1=newMyBox();//创建对象b1

MyBoxb2=newMyBox(170,20,60,60);//创建对象b2

publicvoidpaint(Graphicsg){

b1.setPosition(20,20);

b1.setSize(60,60);

b1.draw(g);

g.drawString("矩形1的X位置:

"+b1.getX(),20,100);

g.drawString("矩形1的Y位置:

"+b1.getY(),20,120);

b2.draw(g);

g.drawString("矩形2的X位置:

"+b2.getX(),b2.getX(),b2.getY()+80);

g.drawString("矩形2的Y位置:

"+b2.getY(),b2.getX(),b2.getY()+100);

}

}

classMyBox{

privateintx,y,width,height;

MyBox(){

x=0;

y=0;

width=0;

height=0;

}

MyBox(intxPos,intyPos,intw,inth){

x=xPos;

y=yPos;

width=w;

height=h;

}

publicvoidsetPosition(intxPos,intyPos){

x=xPos;

y=yPos;

}

publicvoidsetSize(intw,inth){

width=w;

height=h;

}

publicintgetX(){

returnx;

}

publicintgetY(){

returny;

}

publicvoiddraw(Graphicsg){

g.drawRect(x,y,width,height);

}

}

2.编写一个浏览Applet应用程序的页面文件KY3_2.HTML

3.将KY3_2.java源程序编译为KY3_2.class文件

4.使用浏览器或使用小程序查看器浏览KY3_2.HTML文件(即在命令提示符下输入:

appletviewer

KY3_2.HTML),运行.

思考:

程序的结构。

类与对象的关系。

对象创建、使用、销毁的过程。

(三)编写显示当前日期和时间的程序

1.编写Applet类文件KY3_3.java

♦程序功能:

该程序通过使用一个自定义类Time,实现显示当前日期和时间的功能

♦KY3_3.java程序源代码如下。

importjava.awt.Graphics;

importjava.applet.Applet;

importjava.util.Calendar;

classTime{

privateCalendart;

privateinty,m,d,hh,mm,ss;

Time(){

t=Calendar.getInstance();

y=t.get(t.YEAR);

m=t.get(t.MONTH)+1;

d=t.get(t.DATE);

hh=t.get(t.HOUR_OF_DAY);

mm=t.get(t.MINUTE);

ss=t.get(t.SECOND);

}

publicStringgetDate(){

returny+"年"+m+"月"+d+"日";

}

publicStringgetTime(){

Strings=hh+"时"+mm+"分"+ss+"秒";

returns;

}

}

publicclassKY3_3extendsApplet{

Timet=newTime();

publicvoidpaint(Graphicsg){

g.drawString("当前日期:

"+t.getDate(),50,40);

g.drawString("当前时间:

"+t.getTime(),50,80);

}

}

2.编写浏览KY3_3类的页面文件KY3_3.html

/java/程序code=KY3_3.classwidth=300height=120>

3.在浏览器中浏览程序运行结果。

(四)使用修饰符

有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。

常用的修饰符如下。

Public,private,protected,package,static,final,transient,volatile

1.程序功能:

通过两个类StaticDemo、KY3_4说明静态变量/方法与实例变量/方法的区别。

2.编写类文件KY3_4.java,程序源代码如下。

classStaticDemo{

staticintx;

inty;

publicstaticintgetX(){

returnx;

}

publicstaticvoidsetX(intnewX){

x=newX;

}

publicintgetY(){

returny;

}

publicvoidsetY(intnewY){

y=newY;

}

}

publicclassKY3_4{

publicstaticvoidmain(String[]args){

System.out.println("静态变量x="+StaticDemo.getX());

System.out.println("实例变量y="+StaticDemo.getY());//非法,编译时将出错

StaticDemoa=newStaticDemo();

StaticDemob=newStaticDemo();

a.setX

(1);

a.setY

(2);

b.setX(3);

b.setY(4);

System.out.println("静态变量a.x="+a.getX());

System.out.println("实例变量a.y="+a.getY());

System.out.println("静态变量b.x="+b.getX());

System.out.println("实例变量b.y="+b.getY());

}

}

3.对上面的源程序进行编译,排错并运行

(五)方法中参数传递的练习

1.编写一个传值调用的程序文件KY3_5.java。

♦程序功能:

程序首先给整型变量x和y赋一个初值10,然后使用传值调用方式调用方法ff1对x和y做乘方及输出x和y的乘方值,最后再输出x和y的乘方值。

♦程序源代码如下。

classKY3_5{

publicstaticvoidmain(String[]args){

intx=10,y=10;

ff1(x,y);

System.out.println("x="+x+",y="+y);

}

staticvoidff1(intpassX,intpassY){

passX=passX*passX;

passY=passY*passY;

System.out.println("passX="+passX+",passY="+passY);

}

}

♦编译KY3_5.java

♦分析其运行结果

2.编写一个调用对象方法的程序文件KY3_6.java。

♦程序功能:

通过调用对象的方法在方法调用后修改了成员变量的值。

♦KY3_6.java程序源代码如下。

classKY3_6{

publicstaticvoidmain(String[]args){

Powerp=newPower();

p.ff2(10,10);

System.out.println("方法调用后x="+p.x+",y="+p.y);

}

}

classPower{

intx=10,y=10;

voidff2(intpassX,intpassY){

System.out.println("初始时x="+x+",y="+y);

x=passX*passX;

y=passY*passY;

System.out.println("方法调用中x="+x+",y="+y);

}

}

♦编译KY3_6.java

以上两个实验例子仅仅是为了说明Java编程中参数传递时要注意的问题,在实际编程中是不可取的,因为完全可以采用其它更好的方法来实现参数的传递。

例如,前面还使用过传递对象的方式。

思考:

方法的参数传递有哪些方式?

区别时什么?

(六)类的继承性练习

1.进一步理解继承的含义

新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。

新类还可添加新的变量和方法。

这种现象就称为类的继承。

当建立一个新类时,不必写出全部成员变量和成员方法。

只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。

被继承的类称为父类或超类(superclass),这个新类称为子类。

Java提供了一个庞大的类库让开发人员继承和使用。

设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。

你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。

所以,通常要对子类进行扩展,即添加新的属性和方法。

这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。

继承的意义就在于此。

2.创建公共类KY3_7_P

(1)编写程序文件KY3_7_P.java,源代码如下。

publicclassKY3_7_P

{

protectedStringxm;//具有保护修饰符的成员变量

protectedintxh;

voidsetdata(Stringm,inth)//设置数据的方法

{

xm=m;

xh=h;

}

publicvoidprint()//输出数据的方法

{

System.out.println(xm+","+xh);

}

}

(2)编译KY3_7_P.java,产生类文件KY3_7_P.class。

3.创建继承的类

(1)程序功能:

通过KY3_7_P类产生子类KY3_8,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、xi(系)。

在程序中调用了父类的print方法,同时可以看出子类也具有该方法。

(2)编写KY3_8.java程序,源代码如下。

classKY3_8extendsKY3_7_P

{

protectedStringxy;

protectedStringxi;

publicstaticvoidmain(Stringargs[])

{

KY3_7_Pp1=newKY3_7_P();

p1.setdata("帅零",12321);

p1.print();

KY3_8s1=newKY3_8();

s1.setdata("郭丽娜",12345);//调用父类的成员方法

s1.xy="经济管理学院";//访问本类的成员变量

s1.xi="信息管理系";//访问本类的成员变量

s1.print();

System.out.print(s1.xm+","+s1.xy+","+s1.xi);

}

}

(3)编译并运行程序

注意:

公共类KY3_7_P与KY3_8类要在同一文件夹(路径)内。

(七)类的多态性练习

1.理解类的多态性

类的继承发生在多个类之间,而类的多态只发生在同一个类上。

在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。

这种现象称为类的多态。

多态使程序简洁,为程序员带来很大便利。

在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。

这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。

类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。

2.方法的重载

方法的重载是指对同名方法的不同使用方式。

♦程序功能:

对不同的数进行排序输出。

在IntSort类中定义3个同名的方法sort,在

♦编写KY3_9.java文件,源代码如下。

importjava.awt.Graphics;

importjava.applet.Applet;

classIntSort{

publicStringsort(inta,intb){

if(a>b)

returna+""+b;

else

returnb+""+a;

}

publicStringsort(inta,intb,intc){

intswap;

if(a

swap=a;

a=b;

b=swap;

}

if(a

swap=a;

a=c;

c=swap;

}

54

if(b

swap=b;

b=c;

c=swap;

}

returna+""+b+""+c;

}

publicStringsort(intarr[]){

Strings="";

intswap;

for(inti=0;i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1