JAVA语言程序设计实验指导书(51页).doc

上传人:1595****071 文档编号:36391696 上传时间:2022-08-26 格式:DOC 页数:50 大小:557KB
返回 下载 相关 举报
JAVA语言程序设计实验指导书(51页).doc_第1页
第1页 / 共50页
JAVA语言程序设计实验指导书(51页).doc_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《JAVA语言程序设计实验指导书(51页).doc》由会员分享,可在线阅读,更多相关《JAVA语言程序设计实验指导书(51页).doc(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-JAVA语言程序设计实验指导书-第 50 页HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYJAVA语言程序设计实验指导书 齐心编著翟亚红审核计算机实验教学示范中心2013年1月目录目录2实验一 Java编程环境使用3实验目的3实验导读3实验内容4实验总结7实验二 Java类编程练习8实验目的8实验导读8实验内容10实验总结21实验三 图形用户界面设计22实验目的22实验导读22实验内容23实验总结29实验四 Java事件处理30实验目的30实验导读30实验内容34实验总结41实验五 多线程程序设计42实验目的42实验导读42实验内容44实验总结49参考文献

2、:50附录一 Java Code之多态51附录二 内部类的用法54附录三 和类有关的匿名类55附录四 和接口有关的匿名类56实验一 Java编程环境使用实验目的1 掌握Java运行环境的配置2 掌握Java程序的编写、编译、运行等过程3 熟悉Java语言的基本语法和运行原理4 掌握Java的基本数据类型、表达式和程序控制结构5 熟悉Eclipse开发环境的基本使用方法实验导读1 Java的标准输入和输出流java.lang.System类提供了三种有用的标准流:标准输入流(System.in)、标准输出流(System.out)和标准出错流(System.err)。通过他们可以实现数据的输入输

3、出操作。1) 标准输入流(System.in)通常用于读取用户从键盘输入或用户定义的输入设备的输入。类java.util.Scanner结合System.in实现对指定数据的输入。2) 标准输出流(System.out)用于程序的输出,通常用来在屏幕或用户指定的输出设备上显示信息。有两种典型用法:System.out.print(data)实现在当前位置输出数据,System.out.println(data)实现换行输出数据到屏幕或用户定义的输出设备。3) 标准出错流(System.err)用于显示出错信息,采用System.err.print(data)或System.err.printl

4、n(data)将指定的data输出到指定的输出设备,默认设备为屏幕。2 javax.swing.JOptionPane对话框式的输入和输出,可以提供较好的界面处理。能通过弹出一个标准对话框,来提示用户。可以通过这个性质来实现具有对话框显示效果的数据输入和输出。例如:String str=JOptionPane.showInputDialog(输入您的猜测:);3 java.util.Scannerjava.util.Scanner类可将文本转换成原语或字符串。Scanner对象通过next()系列方法将文本标识转换成不同类型的值。通常和标准输入流(System.in)结合,允许用户通过标准输入

5、流读入数据。Scanner类提供的方法:nextByte()、nextshort()、nextLong()、nextDouble()、nextFloat()、nextInt()等。例如: Scanner scanner=new Scanner(System.in); int i=scanner.nextInt(); /从键盘输入一个整数 scanner.close();4 Java Applet小应用程序Java Applet必须由浏览器来运行,因此必须编写一个超文本文件(含有applet标记的Web页),通知浏览器来运行这个Java Applet。下面是一个简单的HTML文件,使用记事本编辑

6、如下:超文本中的标记和用于通知浏览器运行一个Java Applet,code通知浏览器运行哪个Java Applet。code的=后面是主类的字节码文件,width和height规定了Java Applet的宽度和高度。如果如果HTML文件和字节码文件不在同一目录里,必须在HTML文件中增加选项codebase,来指定小程序中.class文件所在的目录。实验内容1. 设置实验环境1) 安装JDK:下载JDK包以后,按安装向导的提示依次安装。2) 更新环境变量:a) 在“我的电脑”单击“属性”菜单项,进入“系统属性”对话框;b) 选择“高级”选项页;单击“环境变量”按钮,弹出“环境变量”对话框;

7、c) 选择“新建系统变量”,弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“变量值”文本框输入JDK的安装路径;d) 编辑“系统变量”中的”path”变量的值,在“变量值”最后增加JDK安装目录下的bin目录,例如”%JAVA_HOME%bin; ”;e) 在“系统变量”选项区域中查看CLASSPATH 变量,如果不存在,则新建变量CLASSPATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加”.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;”。3) 进入命令行控制台,分别输入“java“、“j

8、ava -version“和“javac“命令,看是否能够出现正确的提示信息(注意:配置完成后需将原来打开的命令提示符窗口关闭并重新打开运行)。2. 简单应用程序的编写1) 在D盘上建立javalab文件夹;2) 打开记事本,在其中输入以下代码;public class PrintA public static void main(String arg)System.out.println( );System.out.println( );System.out.println( );System.out.println( );3) 将其保存在javalab目录下,并命名为PrintA.java

9、;4) 打开命令行窗口,输入:C:Documents and SettingsAdministratord:D:cd javalabD:javalab5) 运行:D:javalabjavac PrintA.java6) 查看是否已经生成class文件;D:javalabdir/w. . PrintA.java PrintA.class7) 运行程序查看结果是否正确。D:javalabjava PrintA8) 修改PrintA.java的文件名为printa,然后重新编译会有什么结果?为什么?9) 修改PrintA.java文件中的main方法为main1,然后重新编译并运行会有什么结果?为什

10、么?3. 简单Applet的编写1) 打开记事本,在其中输入以下代码;import java.awt.*;import java.applet.Applet;public class AppletTest extends Appletpublic void init()setBackground(Color.cyan);public void paint(Graphics g) g.setColor(Color.blue); /在Java Applet中绘制一行文字:“这是一个Java Applet 程序” g.drawString(这是一个Java Applet 程序,10,30); g.s

11、etColor(Color.red); g.setFont(new Font(宋体,Font.BOLD,36);/在Java Applet中绘制一行文字:“我改变了字体” g.drawString(我改变了字体,10,100);2) 将其保存在javalab目录下,并命名为AppletTest.java;3) 将其编译成.class文件;4) 打开记事本,在其中输入以下代码:5) 将其保存在javalab目录下,并命名为AppletTest.html;6) 在命令行下运行:D:javalabappletviewer AppletTest.html7) 还有一种查看方式,就是直接双击Applet

12、Test.html,直接在浏览器中查看结果。8) 将文件中class前面的public去除后再编译运行,看看会有什么结果,为什么?4. String类的常用方法(StringExample.java)阅读分析下面程序,把程序中的代码补充完整,并查看结果。public class StringExample public static void main(String args) String s1 = new String(you are a student), s2 = new String(how are you);if (【补充代码】) / 使用equals方法判断s1与s2是否相同Sy

13、stem.out.println(s1与s2相同); else System.out.println(s1与s2不相同);String s3 = new String(22030219851022024);if (【补充代码】) / 判断s3的前缀是否是“220302”System.out.println(吉林省的身份证);String s4 = new String(你), s5 = new String(我);if (【补充代码】)/ 按着字典序s4大于s5的表达式System.out.println(按字典序s4大于s5); else System.out.println(按字典序s4小

14、于s5);int position = 0;String path = c:javajspA.java;position = 【补充代码】/ 获取path中最后出现的位置System.out.println(c:javajspA.java中最后出现的位置: + position);String fileName = 【补充代码】/ 获取path中“A.java”子字符串System.out.println(c:javajspA.java中含有的文件名: + fileName);String s6 = new String(100), s7 = new String(123.678);int n

15、1 = 【补充代码】 / 将s6转化成int型数据double n2 = 【补充代码】 / 将s7转化成double型数据double m = n1 + n2;System.out.println(m);String s8 = 【补充代码】 / String调用valuOf(double n)方法将m转化为字符串对象position = s8.indexOf(.);String temp = 【补充代码】 / 获取s8中小数点后面的小数System.out.println(数字 + m + 有 + temp.length() + 位小数);String s9 = new String(ABCD

16、EF);char a = 【补充代码】 / 将s9存放到数组a中for (int i = a.length - 1; i = 0; i-) System.out.print( + ai);5. 在控制台下求两个实数的最大值(CompareTwoNumbers.java)要求:从键盘输入任意两个实数,比较两个数字的大小,将较大的数输出。数据输入和输出用Java的标准输入流和输出流来实现。请按照代码提示编写完整程序,并查看结果。代码提示:import java.util.Scanner; /导入Scanner对象;Scanner scanner = new Scanner(System.in);/

17、实例化一个Scanner对象;number1 = scanner.nextDouble();/从键盘输入一个实数赋值给number1;6. 猜数字游戏(GuessNumber.java)要求:系统生成一个1至100之间的随机整数(sysNumber),利用JoptionPane对话框输入你的猜测整数(guessNumber),循环猜测两个数是否相等,如果(guessNumbersysNumber),则提示“猜大了,再输入你的猜测:”,并重新输入新的猜测整数,如果(guessNumber0)/ 按着字典序s4大于s5的表达式System.out.println(按字典序s4大于s5); else

18、 System.out.println(按字典序s4小于s5);int position = 0;String path = c:javajspA.java;position = path.indexOf();/ 获取path中最后出现的位置System.out.println(c:javajspA.java中最后出现的位置: + position);String fileName = path.substring(position+1);/ 获取path中“A.java”子字符串System.out.println(c:javajspA.java中含有的文件名: + fileName);St

19、ring s6 = new String(100), s7 = new String(123.678);int n1 = Integer.parseInt(s6); / 将s6转化成int型数据double n2 = Double.parseDouble(s7); / 将s7转化成double型数据double m = n1 + n2;System.out.println(m);String s8 =String.valueOf(m); / String调用valuOf(double n)方法将m转化为字符串对象position = s8.indexOf(.);String temp = s8

20、.substring(position+1); / 获取s8中小数点后面的小数System.out.println(数字 + m + 有 + temp.length() + 位小数);String s9 = new String(ABCDEF);char a = s9.toCharArray(); / 将s9存放到数组a中for (int i = a.length - 1; i = 0; i-) System.out.print( + ai);第五题import java.util.Scanner;public class Campare public static void main(Str

21、ing args) Scanner input = new Scanner(System.in);int firstNumber;int scondNumber;System.out.print(第一个整数);firstNumber = input.nextInt();System.out.print(第二个整数);scondNumber = input.nextInt();if (firstNumber scondNumber)System.out.println(+firstNumber);elseSystem.out.println(+scondNumber);第六题import jav

22、ax.swing.JOptionPane;public class Caishuzi public static void main(String args) int sysNumber = (int)(Math.random()*100)+1;String number;int number2;number=JOptionPane.showInputDialog(输入您的猜测);number2= Integer.parseInt(number);if(number2sysNumber)number=JOptionPane.showInputDialog(猜大了,在此输入您的猜测);numbe

23、r2= Integer.parseInt(number);else JOptionPane.showInputDialog(null,恭喜您 ,结果正确);第七题public class Shuzu public static void main(String args) int i; int j;int a=1,2,3,4,5,6,7,8,9;for(i=0;ia.length;i+)for(j=0;jai.length;j+)System.out.print(t+aij);System.out.println();System.out.print(输出修改后的数组n);for(i=0;ia

24、.length;i+)for(j=0;jai.length;j+)System.out.print(t+aji);System.out.println();实验总结 在这一系列的实验中,我基本掌握了Java的编程规则、请教老师、同学互助、查阅资料等基本的学习方式, 说起来编程的经验应该是多了很多。在上机调试的时候也遇到了一些问题,输入的错误,这种错误还是比较容易找出来的。发现JAVA虽然看起来比C或C+要容易一点,但是由于它自身带有相当多的方法定义,这些个方法虽然不用我们自己再去编写了但是需要花相当多的时间去记忆那些方法是需要导入的,还有方法名所以对我来说这真的是比C里简单几个文件的导入还要难

25、上很多。实验二 Java类编程练习实验目的1 掌握类及类的声明2 掌握对象的定义和使用3 掌握接口的定义与实现实验导读继承、封装和多态是Java面向对象的3大特性,它们是面向对象程序开发的重要环节。继承机制的使用可以复用一些定义好的类,减少重复代码的编写。多态机制可以动态调整对象的调用,降低对象之间的依存关系。同时为了优化继承与多态,一些类除了继承父类还可以使用接口的形式,Java中的类可以同时实现多个接口,接口被用来建立类与类之间关联的标准。1 类的继承(extends)继承可以理解为现实世界中的“是一种(is-a)”关系,实现继承是通过extends关键字在声明类的时候指定其父类,其声明格

26、式如下:修饰符 class 类名 extends 父类名继承某个父类而生成新的子类不但拥有父类的变量与方法,还可以为子类添加新的成员变量和成员方法,以增强父类的功能,也就是所谓的扩展。还可以使用super关键字引用父类的方法,然后再添加新的业务代码。甚至还可以在子类中为父类的某个方法定义多个重载方法,增加该类的灵活性。2 访问修饰符Java中定义了private、public、protected和默认的访问修饰符,这些修饰符控制着对类和类的成员变量以及成员方法的访问规则。另外,还可以辅助static和final关键字定义特殊规则。访问包位置类修饰符修饰符Privateprotected默认修饰

27、符Public本类可见可见可见可见同包其他类不可见可见可见可见其他包的类不可见不可见不可见可见同包的子类不可见可见可见可见其他包的子类不可见可见不可见可见public是公有类型的权限修饰符,使用public修饰的类、成员变量和成员方法,其他类都可以访问,包括任意包中的任意类以及子类。private是私有类型的权限修饰符,使用private修饰的成员变量和成员方法,只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。protected是保护级别的权限修饰符,它保护成员不会被其他包或非子类访问。也就是说protected修饰的成员只能被子类和同一包中定义的其他类访问。当不添加任何

28、权限修饰符时,编译器会使用默认权限修饰符,该修饰符的权限级别与protected类似,不同之处在于,其他包定义的子类无法访问父类默认权限修饰的成员。3 封装(encapsulation)封装是指把对象的属性隐藏在对象的内部,不允许外部直接访问和修改。Java规范中的设置器和访问器就是实现封装的标准方法,它们用于设置和获取对象的属性值。设置器方法的命名一般以set作为方法名的前缀,以属性名作为后缀。访问器方法的命名一般以get或is作为方法名称的前缀,以属性名作为后缀。对于boolean类型的属性,应该使用is前缀定义访问器 方法。例如:public class Car private Stri

29、ng color;private boolean running;public String getColor() return color;public void setColor(String color) this.color = color;public boolean isRunning() return running;public void setRunning(boolean running) this.running = running;4 Object类在Java中,所有的类都直接或间接继承了java.lang.Object类,它是所有类的父类。Object类中常用的两个方

30、法为equals()和toString()方法。任何类都可以重写Object类中的方法。5 对象的上转型对象假设B类是A类的子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时:A a = new B(); 称这个A类对象a是子类对象b的上转型对象。l 上转对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。l 上转型对象可以操作子类继承或隐藏成员变量,也可以使用子类继承的或重写的方法。l 上转型对象操作子类继承或重写的方法时,就是通知对应的子类对象去调用这些方法。因此,如果子类重写了父类的某个方法后,对象的上转型对象调用这

31、个方法时,一定是调用了这个重写的方法。l 可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类所有属性和功能。6 多态(polymophism)多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。那么当我们把子类创建的对象的引用放到一个父类的对象中时,就得到了该对象的一个上转型对象,那么这个上转的对象在调用这个方法时就可能具有多种形态。多态性的实现:通过方法的重载(overloading)、覆盖(overriding)和接口来实现。l 方法重载是Java实现面向对象的多态性机制的一种方式。同一

32、个类中多个方法有相同的名字,不同的参数列表,这种情况称为方法重载。返回类型不同并不足以构成方法重载。当重载方法被调用时,编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。l 方法覆盖是Java实现多态性机制的另一种方式。在类层次结构中,如果子类中的一个方法与父类中的方法有相同的方法名并具有相同数量和类型的参数列表,这种情况称为方法覆盖。当一个覆盖方法通过父类引用被调用,Java根据当前被引用对象的类型来决定执行哪个版本的方法。可以通过super关键字调用直属父类中被覆盖的方法版本。参考代码:附录一 Java Code之多态。7 接口接口是特殊的类,只有方法的原型,方法的实现在其子类中

33、具体定义。Java不支持多继承性,即一个类只能有一个父类。单继承性使得Java简单,易于管理程序。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。一个类通过使用关键字implements 声明自己使用一个或多个接口。如果使用多个接口,用逗号隔开接口名。如:class A implements Printable,Addable如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体。接口只关心功能,并不关心功能的具体实现。接口回调是指:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。

34、实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法。参考代码:附录四 和接口有关的匿名类8 内部类Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。参考代码:附录二 内部类的用法9 匿名类l 和类有关的匿名类当使用类创建对象时,程序允许我们把类体与对象的创建组合在一起,也就是说,类创建对象时,除了构造方法还有类体,此类体被认为是该类的一个子类去掉

35、类声明后的类体,称作匿名类。匿名类就是一个子类,由于无名可用,所以不可能用匿名类声明对象,但却可以直接用匿名类创建一个对象。匿名类一定是内部类,匿名类可以继承父类的方法也可以重写父类的方法,匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变量和static方法。匿名类的主要用途就是向方法的参数传值。参考代码:附录三 和类有关的匿名类l 和接口有关的匿名类Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了接口的类去掉类声明后的类体,称作匿名类。参考代码:附录四 和接口有关的匿名类实验内容1. 对象的创建和使用编写一个圆环类Ring的Java程

36、序。圆环类有3个数据成员,分别是内半径innerRadius,外半径outerRadius和颜色color,这些属性通过get和set方法进行封装。另外,圆环类中的getArea方法可以返回其面积。把程序中的代码补充完整,并查看结果。public class Ring private double innerRadius; private double outerRadius; public String color; public Ring(double iRadius, double oRadius, String c) /初始化数据成员 innerRadius=iRadius; oute

37、rRadius=oRadius; color=c; /用get和set方法封装数据成员 public double getArea() return (outerRadius*outerRadius-innerRadius*innerRadius)*Math.PI; public double getInnerRadius() return innerRadius;public void setInnerRadius(double innerRadius) this.innerRadius = innerRadius;public double getOuterRadius() return

38、outerRadius;public void setOuterRadius(double outerRadius) this.outerRadius = outerRadius;public String getColor() return color;public void setColor(String color) this.color = color;public static void main(String args) Ring ring = new Ring(5,8,red);System.out.println(圆环的内半径: + ring.getInnerRadius( )

39、;System.out.println(圆环的外半径: + ring.getOuterRadius( );System.out.println(圆环的颜色: + ring.color); System.out.println(圆环的面积: + ring.getArea() + n);ring.setInnerRadius(4);ring.setOuterRadius(6); /设置圆环ring的外半径为6ring.setColor(blue);System.out.println(圆环的内半径: + ring.getInnerRadius( );System.out.println(圆环的外半

40、径: + ring.getOuterRadius( );System.out.println(圆环的颜色: + ring.color); System.out.println(圆环的面积: + ring.getArea(); 思考:1) 将程序中的语句Ring ring = new Ring(5,8,red); 改成Ring ring = new Ring();修改后编译运行,此时有错误发生吗?分析错误的原因。2) 接着为程序添加一个如下所示的默认构造函数,观察程序运行是否还有上述错误发生?public Ring() innerRadius = 1.0; outerRadius = 2.0; color = white;3) 如果在输出圆环的面积时要求保留两位小数,程序如何修改?4) 请为圆环类Ring在添两个方法以便能返回内圆和外圆的周长,然后在主函数main()中分别创建两个对象ring1,ring2以显示周长。2. 使用类来封装对象的属性和功能编写一个Java程序,该程序中有3个类:Trangle、Lader和Circle,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁