Java程序设计B要点.docx

上传人:b****0 文档编号:17381996 上传时间:2023-07-24 格式:DOCX 页数:35 大小:122.59KB
下载 相关 举报
Java程序设计B要点.docx_第1页
第1页 / 共35页
Java程序设计B要点.docx_第2页
第2页 / 共35页
Java程序设计B要点.docx_第3页
第3页 / 共35页
Java程序设计B要点.docx_第4页
第4页 / 共35页
Java程序设计B要点.docx_第5页
第5页 / 共35页
Java程序设计B要点.docx_第6页
第6页 / 共35页
Java程序设计B要点.docx_第7页
第7页 / 共35页
Java程序设计B要点.docx_第8页
第8页 / 共35页
Java程序设计B要点.docx_第9页
第9页 / 共35页
Java程序设计B要点.docx_第10页
第10页 / 共35页
Java程序设计B要点.docx_第11页
第11页 / 共35页
Java程序设计B要点.docx_第12页
第12页 / 共35页
Java程序设计B要点.docx_第13页
第13页 / 共35页
Java程序设计B要点.docx_第14页
第14页 / 共35页
Java程序设计B要点.docx_第15页
第15页 / 共35页
Java程序设计B要点.docx_第16页
第16页 / 共35页
Java程序设计B要点.docx_第17页
第17页 / 共35页
Java程序设计B要点.docx_第18页
第18页 / 共35页
Java程序设计B要点.docx_第19页
第19页 / 共35页
Java程序设计B要点.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java程序设计B要点.docx

《Java程序设计B要点.docx》由会员分享,可在线阅读,更多相关《Java程序设计B要点.docx(35页珍藏版)》请在冰点文库上搜索。

Java程序设计B要点.docx

Java程序设计B要点

《Java程序设计B》

实验指导书

尹春娇编写胡俊审定

 

安徽新华学院信息工程学院

2015年5月

前言

Java语言是一门当前流行的面向对象的程序设计语言,它相对于C++语言做了一些简化,也增加了一些新特性,是一门实践操作性很强、也比较容易入门的优秀程序设计语言。

上机实验的目的在于提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解Java语言的基本结构和面向对象的程序设计方法,体会Java语言的精髓。

  为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了10个实验,实验项目比较全面的涵盖了Java语言程序设计的相关知识模块,读者可以根据教材讲授内容选择相应的实验内容,帮助对理论知识的深入理解。

由于编者水平有限,错误和不当之处在所难免,在此恳请读者给予批评指正,编者的电子邮件地址是:

yinchunjiao@。

2015年12月

 

第一章Java语言概述

实验一Java开发环境设置与Java程序结构

一、实验目的

1.练习java基本开发环境的配置

2.编写简单的java程序和applet,体会java程序开发过程,掌握java命令行工具

二、实验仪器

1.计算机一台

三、实验原理

1.Java程序开发的基本环境是Sun公司提供的java开发平台,分J2ME、J2SE、J2EE三种,教学选用J2SE,下载并安装J2SE的最新版本,配置开发环境。

2.Java程序的开发过程分编辑、编译、运行三个步骤,应用程序和Applet的运行方式有所不同。

四、实验内容

1.Java软件开发工具包(J2SE)的下载、安装与环境配置

2.编写简单的java应用程序并编译运行

五、实验步骤

1.下载J2SE安装程序:

从Sun官方网站下载J2SE的最新版本的JDK软件包,目前版本是JDK6.0。

JDK软件包安装程序分为在线(Onling)安装和离线安装(OffLine)两种,

根据安装时机子能否连网而做出选择,下载时要注意选择相应的操作系统类型。

同时下载J2SE的Documentation,其中包含J2SE的API手册,以方便编程时查阅参考。

2.安装J2SE:

运行J2SE安装程序“jdk-6u4-windows-i586-p.exe”,在安装过程中可以设置安装路径及选择要安装的组件,默认的安装路径为“C:

\ProgramFiles\Java\jdk1.6.0_04\”,也可以根据需要将J2SE安装

到其他目录下。

默认的组件选择是全部安装。

3.设置环境变量:

为了能正确方便的使用JDK,需要手工配置一些Windows的环境变量。

以WindowsXP为例说明设置过程。

在桌面“我的电脑”图标上单击右键,选择“属性”菜单,在出现的系统属性设置界面的“高级”选项卡中单击“环境变量”按钮,将出现“环境变量”设置界面。

在“系统变量”框中选择“Path”,然后单击“编辑”按钮,在出现的“编辑系统变量”对话框中,在“变量值”栏的末尾添加“;C:

\ProgramFiles\Java\jdk1.6.0_04\bin”。

如果“系统变量”框中没有“Path”变量,则选择“新建”按钮新建一个名为“Path”的环境变量,变量值设为“C:

\ProgramFiles\Java\jdk1.6.0_04\bin”。

用同样方法设置环境变量“classpath”,为了保证JVM能找到你的程序所在当前文件夹下的自定义的类文件,通常将当前文件夹也添加到“classpath”的变量值中,即将“classpath”的值设置为“C:

\ProgramFiles\Java\jdk1.6.0_04\lib;.”。

设置完成后,单击“开始”→“运行”,在对话框中输入“cmd”,点击“确定”或键盘回车键后打开命令行窗口。

在命令提示符下输入“java”或“javac”,回车后,如果出现其用法参数提示信息,则安装配置正确,如下图所示。

4.编写java源程序:

使用文本编辑器(如记事本或EditPlus)编辑简单的java源程序,如下列HelloJava程序:

publicclassHelloJava{

  publicstaticvoidmain(Stringargs[]){

  System.out.println("HelloJava!

");

  }

  }

保存源程序,本例存为HelloJava.java。

5.编译并运行java程序:

在命令提示符窗口使用Java编译器(javac.exe)进行编译,将Java源程序编译成字节码文件(HelloJava.class),然后使用Java解释器(java.exe)可将编译后的字节码文件HelloJava.class解释执行。

六、数据记录及处理

1.JDK安装路径及Path、Classpath变量的配置值

2.Java源程序、保存的文件名及运行输出结果

七、实验注意事项

1.环境变量配置时多个值之间用分号分割,当前目录”.”添加到classpath变量中

2.Java源文件保存时文件名必须与public类名一致

八、思考题

1.为什么必须配置path和calsspath环境变量?

其作用是什么?

2.Java虚拟机在java程序执行过程中的作用。

 

第三章Java面向对象程序设计

实验二面向对象程序设计

一、实验目的

1.通过编程和上机实验理解Java语言面向对象编程思想,掌握类和对象的构建与使用,了解成员变量和成员方法的特性,掌握面向对象程序设计的方法。

2.了解类的继承性和多态性的作用及实现机制,了解接口的作用,了解包的创建和使用。

二、实验仪器

1.计算机一台

三、实验原理

1.Java是一种纯粹的面向对象的语言,相对于C++做了一些简化,其单继承机制避免了多继承存在的问题,通过接口又弥补了单继承的不足。

2.多态性提高了问题的抽象级别,降低了问题的复杂度,多态分两种,静态多态性和动态多态性,分别通过方法重载和继承时方法覆盖实现。

3.Java中类和接口属于引用数据类型,因此作为参数传递时实际传的是隐含地址。

四、实验内容

1.设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改;创建类的对象,使用对象的方法来访问或修改对象的变量。

(1)程序功能:

设计一个用来描述汽车的类Car,使用类的成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的成员方法来表示改变汽车的速率和停车两个操作;创建主类来使用Car类的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。

(2)程序源代码如下。

//汽车类Car的定义

classCar{

privateStringownerName;//车主姓名

privatefloatcurSpeed;//当前车速

privatefloatcurDirInDegree;//当前方向盘转向角度

publicCar(StringownerName){

this.ownerName=ownerName;

}

publicCar(StringownerName,floatspeed,floatdirInDegree){

this(ownerName);

this.curSpeed=speed;

this.curDirInDegree=dirInDegree;

}

publicStringgetOwnerName(){//提供对车主姓名的访问

returnownerName;

}

publicfloatgetCurDirInDegree(){//提供对当前方向盘转向角度的访问

returncurDirInDegree;

}

publicfloatgetCurSpeed(){//提供对当前车速的访问

returncurSpeed;

}

publicvoidchangeSpeed(floatcurSpeed){//提供改变当前的车速

this.curSpeed=curSpeed;

}

publicvoidstop(){//提供停车

this.curSpeed=0;

}

}

//主类TestCar的定义

publicclassTestCar{

publicstaticvoidmain(String[]args){

Carcar=newCar("成龙",200f,25f);

System.out.println("车主姓名:

"+car.getOwnerName());

System.out.println("当前车速:

"+car.getCurSpeed());

System.out.println("当前转向角度:

"+car.getCurDirInDegree());

car.changeSpeed(80);

System.out.println("在调用changeSpeed(80)后,车速变为:

"+car.getCurSpeed());

car.stop();

System.out.println("在调用stop()后,车速变为:

"+car.getCurSpeed());

}

}

(3)保存源程序,编译并运行,观察运行结果。

2.使用修饰符来限定类的成员变量或成员方法的属性

  使用类的成员修饰符来设置类成员的访问权限,可以达到数据保护的目的。

编写程序练习修饰符的使用。

  常用的修饰符如下:

   publicprivateprotectedpackagestaticfinal

  不同修饰符的访问控制权限如表3.1所示。

访问权限修饰符

子类

所有类和包

public

private

 

protected

缺省权限

表3.1

(1)程序功能:

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

(2)程序源代码如下。

  classStaticDemo{

   staticintx;

   inty;

   publicstaticintgetX(){

    returnx;

   }

   publicstaticvoidsetX(intnewX){

    x=newX;

   }

   publicintgetY(){

    returny;

   }

   publicvoidsetY(intnewY){

    y=newY;

   }

  }

  publicclassTest{

   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)对上面的源程序进行编译,观察出错提示。

(4)修改源程序中的出错语句,删除或使用解释符//隐藏起来,例如,//System.out.println("实例变量y="+StaticDemo.getY());

(5)重新编译并运行该程序,观察运行结果。

3.调用方法时参数传递的练习

  在Java中,方法调用时的参数传递只有值传递一种,即进行实参到形参的简单值拷贝。

当基本类型数据作为参数时,把实参值拷贝给形参,方法内部对参数的修改不会影响实参;当引用类型(类、接口、数组)数据作参数时,因为引用就是隐含的指针,所以进行值拷贝时,其实是在传递引用(隐含指针),方法内部对参数的修改会影响到实参。

3.1、编写一个传递基本类型数据进行方法调用的程序

(1)程序功能:

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

(2)程序源代码如下。

  classPassParam{

   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);

   }

  }

(3)编译并运行,观察运行结果,体会基本数据类型的值传递。

3.2、编写一个传递对象进行方法调用的程序

(1)程序功能:

定义一个有x、y两个成员的类Power,主类TestParam中创建Power的对象给x、y赋初值10,方法ff2以Power类对象为参数,内部对参数对象的x、y的值进行乘方,输出调用ff2前后的成员x、y的值。

(2)程序源代码如下。

classPower{

   intx=10,y=10;

   voidprintXY(){

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

   }

Power(intnx,intny){

x=nx;y=ny;

}

  }  

PublicclassTestParam{

   publicstaticvoidmain(String[]args){

    Powerp=newPower(10,10);

p.printXY();

    ff2(p);

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

   }

Staticvoidff2(Powerob)

{

ob.x=ob.x*ob.x;

ob.y=ob.y*ob.y;

}

p.printXY();

  }

  (3)编译并运行,观察运行结果,体会引用类型的值传递。

4.类的继承性练习

  Java继承机制允许在已有类(父类)的基础上构造新类,新类(子类)自动继承父类的所有属性和方法,同时可以对子类进行扩充,继承机制很好地支持了软件重用,有效地提高了程序设计的效率。

4.1继承性练习

(1)程序功能:

编写创建学生类的程序,体现继承性。

(2)程序源代码如下。

  publicclassStudent//学生类,作为父类,描述学生基本信息

  {

   protectedStringxm;//姓名,保护成员

   protectedintxh;//学好,保护成员

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

   {

    xm=m;

    xh=h;

   }

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

   {

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

   }

  }

  classUndergraduateextendsStudent{//大学生类,扩充了学院、系的信息

   protectedStringxy;//学院

   protectedStringxi;//系

   publicstaticvoidmain(Stringargs[]){

    Students=newStudent();

    s.setdata("李四",12321);

    s.print();

    Undergraduateus=newUndergraduate();

    us.setdata("张三",12345);//调用父类的成员方法

    us.xy="安徽新华学院";//访问本类的成员变量

    us.xi="信息工程学院计算机系";//访问本类的成员变量

    us.print();//调用父类的成员方法

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

   }

  }

(3)编译并运行,观察运行结果,体会继承性。

4.2this和super的使用

(1)程序功能:

程序功能:

说明this和super的用法。

程序首先定义Point(点)类,然后创建点的子类Line(线)。

最后通过Test类输出线段的长度。

程序中通过super(a,b)调用父类Point的构造方法为父类的x和y赋值。

在子类Line的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this引用,告诉编译器是为当前类的成员变量赋值。

在length和toString方法中使用父类成员变量时,使用super引用,告诉编译器使用的是父类的成员变量。

(2)程序源代码如下:

  classPoint{

   protectedintx,y;

   Point(inta,intb){

    setPoint(a,b);

   }

   publicvoidsetPoint(inta,intb){

    x=a;

    y=b;

   }

  }

  classLineextendsPoint{

   protectedintx,y;

   Line(inta,intb){

    super(a,b);

    setLine(a,b);

   }

   publicvoidsetLine(intx,inty){

    this.x=x+x;

    this.y=y+y;

   }

   publicdoublelength(){

    intx1=super.x,y1=super.y,x2=this.x,y2=this.y;

    returnMath.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));

   }

   publicStringtoString(){

    return"直线端点:

["+super.x+","+super.y+"]["+

        x+","+y+"]直线长度:

"+this.length();

   }

  }

  publicclassTest{

   publicstaticvoidmain(Stringargs[]){

    Lineline=newLine(50,50);

    System.out.println("\n"+line.toString());

   }

  }

(3)编译并运行,观察运行结果。

5.类的多态性练习

  多态简言之就是“一个接口多种实现”,或者说“不同的对象接收到相同的消息执行不同的操作”,Java语言的多态分两种:

编译时多态(静态多态)和运行时多态(动态多态),编译时多态通过方法的重载(包括构造方法)来实现,运行时多态通过方法的覆盖来实现。

5.1方法的重载(静态多态性)

(1)程序功能:

使用同名方法求两个整数、浮点数、字符的较大值。

(2)程序源代码如下,补充空缺代码,并编译运行。

  classGSelect{

   publicstaticintgreaterOf(inta,intb){

    //补充方法体,返回两个整数中的较大值

   }

   publicstaticdoublegreaterOf(doublea,doubleb){

    //补充方法体,返回两个浮点数中的较大值

   }

   publicstaticchargreaterOf(chara,charb){

    //补充方法体,返回两个字符中的较大值

  }

  publicclassTestGreater{

   publicstaticvoidmain(String[]args){

    inta1=30,b1=12;

doublea2=23.3,b2=23.4;

chara3=’G’.b3=’s’;

  System.out.println(a1+”“+b1+"中较大的是:

"+GSelect.greaterOf(a1,b1));

  System.out.println(a2+”“+b2+"中较大的是:

"+GSelect.greaterOf(a2,b2));

  System.out.println(a3+”“+b3+"中较大的是:

"+GSelect.greaterOf(a3,b3));

  }

 }

5.2方法的覆盖(动态多态性)

(1)程序功能:

定地Shape类作为图形类的基类,其中包含计算面积的方法,在Shape类的基础上派生出两个子类Rectangle和Circle,子类中覆盖父类计算面积的方法,在主类中计算矩形和圆形的面积,体现出多态性。

(2)程序源代码如下:

  classShape{//基类的定义

   protecteddoublearea;

   

   doublegetArea(){

    area=0;

returnarea;

   }

  }

  classRectangleextendsShape{//矩形类的定义

protecteddoublewidth,height;

   Rectangle(doublew,doubleh){

    width=w;

height=h;

   

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2