Java程序设计实验报告.docx
- 文档编号:29654917
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:23
- 大小:33.18KB
Java程序设计实验报告.docx
《Java程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《Java程序设计实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
Java程序设计实验报告
Java
程
序
设
计
实
验
报
告
实验一JDK开发环境和结构化程序设计
实验学时:
2实验类型:
综合性
一、实验目的
1.熟悉JDK开发环境。
2.熟悉UltraEdit/NotePad等编辑器编写、编译、运行Java程序。
3.掌握JavaApplication的程序结构和开发过程。
4.掌握Eclipse工具的使用。
5.结构化程序设计
二、实验内容
1.JDK开发环境
(1)J2sdk开发环境安装。
假设JDK的安装路径为C:
\JDK;
(2)设置环境变量PATH和CLASSPATH(如果在autoexec.bat中没有进行设置)。
如
SETPATH=C:
\JDK\BIN;%PATH%
SETCLASSPATH=.;%CLASSPATH%;d:
\test_java(自己的工作目录)
2.UltraEdit/Notepad编辑器
练习使用Ultraedit/Notepad创建Java源程序的方法。
3.掌握JavaApplication程序开发过程
(1)编辑源程序,如下程序:
importjava.io.*;
publicclassHelloWorld1{
publicstaticvoidmain(Stringarg[]){
System.out.println("HelloWorld!
");
}
}
(2)保存文件,(注意大小写)。
可将文件保存在“D:
\test_java\”目录中,注意文件名为HelloWorld1.java。
(3)进入命令行(MS-DOS)方式,设定当前目录为“D:
\test_java\”,运行Java编译器:
D:
\test_java>javacHelloWorld1.java
(4)如果输出错误信息,则根据错误信息提示的错误所在行返回EditPlus编辑器进行修改。
常见错误是类名与文件名不一致、当前目录中没有所需源程序、标点符号全角等。
如果没有输出任何信息或者出现“deprecation”警告,则认为编译成功,此时会在当前目录中生成HelloWorld1.class文件。
(5)利用Java解释器运行这个JavaApplication程序,并查看运行结果。
D:
\test_java>javaHelloWorld1
4.Eclipse开发环境的使用
练习使用Eclipse实现第3步中JavaHelloWorld程序的方法。
5.编程采用冒泡法实现对数组元素由小到大排序。
冒泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。
publicclasshello{
publicstaticvoidmain(String[]args){
inti,j,t;
intintArray[]={1,9,3,7,4,5};
for(i=0;i for(j=i+1;j if(intArray[i]>intArray[j]){ t=intArray[i];intArray[i]=intArray[j];intArray[j]=t; } for(i=0;i System.out.println(intArray[i]); } } 运行结果为: 1 3 4 5 7 9 1.什么是Java虚拟机? 它的作用是什么? Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。 Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。 Java语言的一个非常重要的特点就是与平台的无关性。 而使用Java虚拟机是实现这一特点的关键。 一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。 而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。 Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。 2.JavaApplication程序与JavaApplet程序的不同之处有那些? (1)运行方式不同。 JavaApplication是完整的程序,可以独立运行;JavaApplet程序不能单独运行,它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。 (2)运行工具不同。 JavaApplication程序被编译以后,用普通的Java解释器就可以使其边解释边执行,而JavaApplet必须通过网络浏览器或者Applet观察器才能执行。 (3)程序结构不同。 每个JavaApplication程序必定含有一个并且只有一个main方法,而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。 (4)受到的限制不同。 JavaApplication程序可以设计成能进行各种操作的程序,包括读/写文件的操作,但是JavaApplet对站点的磁盘文件既不能进行读操作,也不能进行写操作。 实验二类与对象 实验学时: 2实验类型: 综合性 一、实验目的 1.掌握类的声明。 2.掌握对象的创建。 3.掌握方法的定义和调用。 4.掌握构造函数的使用。 二、实验内容 1.编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。 创建一个对象,求给定尺寸的立方体的体积。 publicclassBox{ privatefloati; privatefloatm; privatefloatn; publicvoidSetDemo(floati,floatm,floatn) { this.i=i; this.m=m; this.n=n; } publicvoidVolum() { System.out.println(i*m*n); } publicstaticvoidmain(String[]args){ Boxa=newBox(8.5f,5.5f,6.0f); a.SetDemo(); System.out.print("该长方体的体积为: "); a.Volum(); 2.将上题的方法setDemo改用构造函数实现初始化。 publicclassBox{ privatefloati; privatefloatm; privatefloatn; publicBox(floati,floatm,floatn) { this.i=i; this.m=m; this.n=n; } publicvoidVolum() { System.out.println(i*m*n); } publicstaticvoidmain(String[]args){ Boxa=newBox(8.5f,5.5f,6.0f); System.out.print("该长方体的体积为: "); a.Volum(); 三、思考题 1.一个方法或一个块内定义的变量是否可以在方法外或块外使用? 这种变量称为什么? 方法的形式参数是否可以在方法之外使用? 一个方法或一个块内定义的变量不可以在方法外或块外使用,这种变量称为局部变量。 方法的形式参数不可以在方法之外使用 2.为什么说构造函数是一种特殊的方法? 特殊在哪里? 构造函数什么时候执行? 被谁调用? 因为它是在创建对象时就调用,当一个对象被创建时构造函数就执行了,它是java虚拟机自动调用的。 3.编程创建一个Point类,在其中定义两个变量表示一个点的坐标值,再定义构造函数初始化为坐标原点,然后定义一个方法实现点的移动,再定义一个方法打印当前点的坐标。 并创建一个对象验证。 publicclassPoint{ privatefloatx; privatefloaty; publicPoint(floatx,floaty){ this.x=x; this.y=y; } publicvoidgo(floati,floatj){ System.out.println(+(i-x),+(j-y)); } publicstaticvoidmain(String[]args){ Pointp=newPoint(3f,6f); p.go(6f,9f); } } 实验三继承与多态 实验学时: 2实验类型: 综合性 一、实验目的 1.掌握类的继承方法。 2.掌握变量的继承和覆盖。 3.掌握方法的继承、重载和覆盖。 4.了解接口的实现方法。 二、实验内容 1.运行下面的程序,理解成员变量的继承与隐藏。 importjava.io.*; classsum_3{ intsum,num1,num2; staticintnum3; //定义构造函数初始化对象 sum_3(){ num1=0; num2=0; num3=0; sum=0; } } classsub_sum3extendssum_3{ intsum,num1,num2;//隐藏父类sum_3中的实例变量 staticintnum3;//隐藏父类sum_3中的类变量 voidsum(inti,intj,intk){ num1=i; num2=j; num3=k; sum=num1+num2+num3; } } publicclasscomputing{ publicstaticvoidmain(Stringarg[]){ sub_sum3m1=newsub_sum3(); m1.sum(100,200,300); System.out.println("sum="+m1.num1+"+"+m1.num2+"+"+m1.num3+"="+m1.sum); } } 打印结果: sum=100+200+300=600 2.运行下面的程序,理解方法的继承。 classSort3{ doublemax1,max2,max3; Sort3(){ max1=-1; max2=-1; max3=-1; } voidsort(){ doubles; if(max1 s=max1;max1=max2;max2=s; } if(max1 s=max1;max1=max3;max3=s; } if(max2 s=max2;max2=max3;max3=s; } } } classsub_Sort3extendsSort3{ voidsubsort(doublei,doublej,doublek){ max1=i; max2=j; max3=k; sort();//调用父类中的方法sort() } } publicclassClass1{ publicstaticvoidmain(Stringargs[]){ sub_Sort3m1=newsub_Sort3(); m1.subsort(100,200,300); System.out.println("三个数从大到小为: "+m1.max1+","+m1.max2+","+m1.max3); } } 打印结果: 三个数从大到小为: 300.0,200.0,100.0 3.运行下面的程序,理解方法的重载。 classSort2or3{ doublemax1,max2,max3; Sort2or3(){ max1=-1; max2=-1; max3=-1; } voidsort(doublei,doublej){ doubles; max1=i; max2=j; if(max1 s=max1;max1=max2;max2=s; } } voidsort(doublei,doublej,doublek){ doubles; max1=i; max2=j; max3=k; if(max1 s=max1;max1=max2;max2=s; } if(max1 s=max1;max1=max3;max3=s; } if(max2 s=max2;max2=max3;max3=s; } } } publicclassClass1{ publicstaticvoidmain(Stringargs[]){ Sort2or3m1=newSort2or3(); m1.sort(100,200); System.out.println("两个数从大到小为: "+m1.max1+","+m1.max2); m1.sort(50,150,100); System.out.println("三个数从大到小为: "+m1.max1+","+m1.max2+","+m1.max3); } } 打印结果: 两个数从大到小为: 200.0,100.0 三个数从大到小为: 150.0,100.0,50.0 4.运行下面的程序,理解方法的覆盖。 classsort_Demo{ inti,j,k,swap; sort_Demo(){ i=j=k=swap=0; } voidsort(intt1,intt2[]){//父类中的方法用来实现升序 //用选择法按升序排列 for(i=0;i k=i; for(j=i+1;j if(t2[j] if(k! =i){ swap=t2[i]; t2[i]=t2[k]; t2[k]=swap; } } } } classsub_sort_Demoextendssort_Demo{ voidsort(intt1,intt2[]){//子类中的方法实现降序 //用选择法实现降序排列 for(i=0;i k=i; for(j=i+1;j if(t2[j]>t2[k])k=j; if(k! =i){ swap=t2[i]; t2[i]=t2[k]; t2[k]=swap; } } } } publicclassClass1{ publicstaticvoidmain(Stringargs[]){ inta[]={34,12,8,67,88,23,98,101,119,56}; sort_Demom1=newsort_Demo(); sub_sort_Demom2=newsub_sort_Demo(); System.out.println("排序前的数据为: "); for(inti=0;i<10;i++) System.out.print(""+a[i]); //调用父类中的sotr()方法 m1.sort(a.length,a); System.out.println("\n按升序排列的数据为: "); for(inti=0;i<10;i++) System.out.print(""+a[i]); //调用子类中的sort()方法,该方法实现了对父类中方法的覆盖 m2.sort(a.length,a); System.out.println("\n按降序排列的数据为: "); for(inti=0;i<10;i++) System.out.print(""+a[i]); } } 打印结果: 排序前的数据为: 341286788239810111956 按升序排列的数据为: 812233456678898101119 按降序排列的数据为: 119101988867563423128 5.定义两个接口,其方法协议分别完成两个数的加法和减法操作,然后创建一个类实现这两个接口的方法。 publicinterfaceArithmetic{ publicintadd(inta,intb); publicintsub(inta,intb); } publicclassIArithmeticimplementsArithmetic{ publicstaticvoidmain(String[]args){ IArithmetici=newIArithmetic(); System.out.println(i.add(2,3)); System.out.println(i.sub(2,3)); } publicintadd(inta,intb){ returna+b; } publicintsub(inta,intb){ returna-b; } } 三、思考题 1.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么? 方法的重写 2.同名的不同方法共存的情况称为什么? 如何区分这些同名方法? 方法的重载,以参数类型,参数个数和返回值的不同加以区分。 3.创建一个类,声明一个无参数的构造函数,打印类已创建的信息;再重载一个具有String参数的构造函数,打印参数信息;并创建主类验证之。 publicclassTest{ publicTest(){ System.out.println("无参构造! "); } publicTest(Stringtemp){ System.out.println("字符串: "+temp); } publicstaticvoidmain(String[]args){ Testt=newTest(); Testt1=newTest("helloworld! ! "); } } 实验四GUI标准组件及事件处理 实验学时: 2实验类型: 综合性 一、实验目的 掌握常用GUI控制组件及其事件处理。 二、实验内容 1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在“你好”和“再见”之间切换。 importjava.awt.FlowLayout; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjavax.swing.*; publicclassJframe1implementsActionListener{ intcount=0; JFramej=newJFrame("first"); JLabeljl=newJLabel("你好! "); publicvoidactionPerformed(ActionEventarg0){ Stringtemp=arg0.getActionCommand(); if("do".equals(temp)){ count++; if(count==2){ jl.setText("你好! "); count=0; }else{ jl.setText("再见! "); } } } publicJframe1(){ JButtonjb=newJButton("do"); jb.addActionListener(this); j.add(jl); j.add(jb); j.setLayout(newFlowLayout()); j.setSize(200,150); j.setLocation(300,300); j.setVisible(true); } publicstaticvoidmain(String[]args){ newJframe1(); } } 2.编程包含一个单选按钮组和一个普通按钮,单选按钮组中包含三个单选,文本说明分别为“普通”、“黑体”和“斜体”。 选择文本标签为“普通”的单选按钮时,普通按钮中的文字为普通字体,选择文本标签为“黑体”的单选按钮时,普通按钮中的文字的字体为黑体,选择文本标签为“斜体”的单选按钮时,普通按钮中的文字的字体为斜体。 importjava.awt.FlowLayout; importjava.awt.Font; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjavax.swing.ButtonGroup; importjavax.swing.JButton; importjavax.swing.JFrame; importjavax.swing.JPanel; importjavax.swing.JRadioButton; publicclassTypeSetimplementsActionListener{ JFramejf=newJFrame("字体框设置"); JButtonjb=newJButton("你好"); JRadioButtonjrb1=newJRadioButton("普通"); JRadioButtonjrb2=newJRadioButton("黑体"); JRadioButtonjrb3=newJRadioButton("斜体"); ButtonGroupbg=newButtonGroup(); JPaneljp=newJPanel(); publicTypeSet(){ jb.setFont(newFont(jb.getText(),Font.PLAIN,30)); jf.setLayout(newFlowL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 实验 报告