Java 程序设计实验报告实验一 JDK开发环境和结构化程序设计实验学时:2 实验类型:综合性一、实验目的1.熟悉JDK开发环境。
2.熟悉UltraEdit/NotePad等编辑器编写、编译、运行Java程序。
3.掌握Java Application的程序结构和开发过程。
4.掌握Eclipse工具的使用。
5.结构化程序设计二、实验内容1.JDK开发环境(1)J2sdk开发环境安装。
假设JDK的安装路径为C:\JDK;(2)设置环境变量PATH和CLASSPATH(如果在autoexec.bat中没有进行设置)。
如SET PATH=C:\JDK\BIN;%PATH%SET CLASSPATH=.; %CLASSPATH%;d:\test_java (自己的工作目录) 2.UltraEdit/Notepad编辑器练习使用Ultraedit/Notepad创建Java源程序的方法。
3.掌握Java Application程序开发过程(1)编辑源程序,如下程序:import java.io.*;public class HelloWorld1{public static void main(String arg[]){System.out.println("Hello World!");}}(2)保存文件,(注意大小写)。
可将文件保存在“D:\test_java\”目录中,注意文件名为HelloWorld1.java。
(3)进入命令行(MS-DOS)方式,设定当前目录为“D:\test_java\”,运行Java 编译器:D:\test_java>javac HelloWorld1.java(4)如果输出错误信息,则根据错误信息提示的错误所在行返回EditPlus编辑器进行修改。
常见错误是类名与文件名不一致、当前目录中没有所需源程序、标点符号全角等。
如果没有输出任何信息或者出现“deprecation”警告,则认为编译成功,此时会在当前目录中生成HelloWorld1.class文件。
(5)利用Java解释器运行这个Java Application程序,并查看运行结果。
D:\test_java>java HelloWorld14.Eclipse开发环境的使用练习使用Eclipse实现第3步中Java HelloWorld程序的方法。
5.编程采用冒泡法实现对数组元素由小到大排序。
冒泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。
public class hello {public static void main(String[] args) {int i,j,t;int intArray[]={};for(i=0;i<intArray.length-1;i++)for(j=i+1;j<intArray.length;j++)if(intArray[i]>intArray[j]){t=intArray[i];intArray[i]=intArray[j];intArray[j]=t ;}for(i=0;i<intArray.length;i++)System.out.println(intArray[i]);}}运行结果为:1345791.什么是Java虚拟机?它的作用是什么?Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。
Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java语言的一个非常重要的特点就是与平台的无关性。
而使用Java虚拟机是实现这一特点的关键。
一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。
而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。
Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
2.Java Application程序与Java Applet程序的不同之处有那些?(1)运行方式不同。
Java Application是完整的程序,可以独立运行;Java Applet 程序不能单独运行,它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。
(2)运行工具不同。
Java Application程序被编译以后,用普通的Java解释器就可以使其边解释边执行,而Java Applet必须通过网络浏览器或者Applet观察器才能执行。
(3)程序结构不同。
每个Java Application程序必定含有一个并且只有一个main方法,而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。
(4)受到的限制不同。
Java Application程序可以设计成能进行各种操作的程序,包括读/写文件的操作,但是 Java Applet 对站点的磁盘文件既不能进行读操作,也不能进行写操作。
实验二类与对象实验学时:2 实验类型:综合性一、实验目的1.掌握类的声明。
2.掌握对象的创建。
3.掌握方法的定义和调用。
4.掌握构造函数的使用。
二、实验内容1.编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。
创建一个对象,求给定尺寸的立方体的体积。
public class Box {private float i;private float m;private float n;public void SetDemo(float i, float m, float n) {this.i=i;this.m=m;this.n=n;}public void Volum(){System.out.println(i*m*n);}public static void main(String[] args) { Box a=new Box(8.5f,5.5f,6.0f);a.SetDemo();System.out.print("该长方体的体积为:");a.Volum();2.将上题的方法setDemo改用构造函数实现初始化。
public class Box {private float i;private float m;private float n;public Box(float i, float m, float n) {this.i=i;this.m=m;this.n=n;}public void Volum(){System.out.println(i*m*n);}public static void main(String[] args) {Box a=new Box(8.5f,5.5f,6.0f);System.out.print("该长方体的体积为:");a.Volum();三、思考题1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用?一个方法或一个块内定义的变量不可以在方法外或块外使用,这种变量称为局部变量。
方法的形式参数不可以在方法之外使用2.为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用?因为它是在创建对象时就调用,当一个对象被创建时构造函数就执行了,它是java虚拟机自动调用的。
3.编程创建一个Point类,在其中定义两个变量表示一个点的坐标值,再定义构造函数初始化为坐标原点,然后定义一个方法实现点的移动,再定义一个方法打印当前点的坐标。
并创建一个对象验证。
public class Point {private float x;private float y;public Point(float x, float y){this.x = x;this.y = y;}public void go(float i, float j){System.out.println(+(i-x),+(j-y));}public static void main(String[] args) {Point p = new Point(3f,6f);p.go(6f, 9f);}}实验三继承与多态实验学时:2 实验类型:综合性一、实验目的1.掌握类的继承方法。
2.掌握变量的继承和覆盖。
3.掌握方法的继承、重载和覆盖。
4.了解接口的实现方法。
二、实验内容1.运行下面的程序,理解成员变量的继承与隐藏。
import java.io.*;class sum_3{int sum,num1,num2;static int num3;//定义构造函数初始化对象sum_3(){num1=0;num2=0;num3=0;sum=0;}}class sub_sum3 extends sum_3{int sum,num1,num2; //隐藏父类sum_3中的实例变量static int num3; //隐藏父类sum_3中的类变量void sum(int i,int j,int k){num1=i;num2=j;num3=k;sum=num1+num2+num3;}}public class computing{public static void main (String arg[]){sub_sum3 m1=new sub_sum3();m1.sum();System.out.println("sum="+m1.num1+"+"+m1.num2+"+"+m1.num3+"="+m1.sum );}}打印结果:sum=100+200+300=6002.运行下面的程序,理解方法的继承。
class Sort3{double max1,max2,max3;Sort3(){max1=-1;max2=-1;max3=-1;}void sort(){double s;if (max1<max2){s=max1;max1=max2;max2=s;}if (max1<max3){s=max1;max1=max3;max3=s;}if (max2<max3){s=max2;max2=max3;max3=s;}}}class sub_Sort3 extends Sort3{void subsort(double i,double j,double k){max1=i;max2=j;max3=k;sort(); //调用父类中的方法sort()}}public class Class1{public static void main (String args[]){sub_Sort3 m1 = new sub_Sort3();m1.subsort();System.out.println("三个数从大到小为:"+m1.max1+","+m1.max2+","+m1.max3);}}打印结果:三个数从大到小为:300.0,200.0,100.03.运行下面的程序,理解方法的重载。