合工大JAVA实验报告.docx
- 文档编号:7515407
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:20
- 大小:150.22KB
合工大JAVA实验报告.docx
《合工大JAVA实验报告.docx》由会员分享,可在线阅读,更多相关《合工大JAVA实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
合工大JAVA实验报告
《Java技术》实验报告
实验一:
2016年10月11日
学院
计算机与信息学院
专业班级
姓名
成绩
课程
名称
Java技术
实验项目
名称
实验一Java开发环境的安装与配置
指导
教师
教师评语
教师签名:
年月日
一、实验目的
1.掌握JDK的安装步骤(有条件的话可以在Linux系统下安装)。
2.理解环境变量PATH,CLASSPATH的作用,以及它们的设置方法(Win98和Win2000/XP下的不同设置方法)。
3.熟悉TextPad(或JCreator)编辑环境,编写简单的Application程序,并编译和解释执行。
4.记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。
二、实验原理
1.掌握安装Jdk1.6的过程。
2.安装JCreator软件,用于编译java程序。
3.在Textpad环境下编写一个HelloWorld.java程序,在DOS提示符下编译并执行这个程序。
4.设置环境变量PATH,CLASSPATH,使得Java程序能正确编译和执行。
5.编写一个类A,它位于包a中,保存到A.java中,再编写一个类B,它位于包b中,保存到B.java中。
在类B中实例化类A的一个对象。
分别编译类A和类B。
三、使用硬件、软件环境
PC计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装WindowsXP操作系统。
另外,使用JCreator,JDK1.6.0等软件
四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)
1.安装Jdk1.6.0集成环境,安装成功后,配置path,classpath路径,让用户在任何目录下均可用到Java的系统资源。
1先配置%JAVA_HOME%环境变量,路径为jdk的目录;
2配置path环境变量,路径为%JAVA_HOME%\bin;
3再配置classpath环境变量,路径为%JAVA_HOME%\jre\lib;
2.在记事本编写helloworld程序,并在DOS命令行下编译运行。
1在JCreator中写出如下代码,并保存为HelloWorld.java:
publicclassHelloWorld
{
publicstaticvoidmain(String[]args)
{
System.out.println("HelloWorld!
");}
}
2在命令行中进入到该文件路径,并输入javacHelloWorld.java完成编译,再输入javaHelloWorld完成运行。
3.用记事本编写包a包b的程序,并用DOS命令行运行。
执行过程:
①将两个记事本,改名为A.java和B.java,并写出如下程序:
A.java文件的源程序:
packagea;
publicclassA{
publicvoidsay(){
System.out.println("Succeed!
");
}
}
B.java文件中的源程序:
packageb;
importa.*;
publicclassB{
publicstaticvoidmain(Stringargs[]){
Aaa=newA();
aa.maker();
}
}
②先在DOS命令行中编译A.java文件,在命令行中输入javacA.java–d.
再编译B.java文件,在命令行中输入javacB.java-d.
③在命令行中输入javab.B
即可完成。
五、实验结论、分析、思考题与心得体会
通过本次实验,我有以下几方面的收获、认识和体会:
1、学会了在记事本和命令行,JCreator,等环境下编写程序及运行程序的方法;
2、学会了如何安装JDK,以及如何配置%JAVA_HOME%,path,classpath等环境变量
3、加深了Java中相关语法的认识:
1文件名必须与public类的类名相同,并且一个文件中只允许有一个public类。
2Java对大小写敏感,如String中的S就严格区分大小写;对中文标点符号和英文标点符号敏感,java只能识别英文标点符号。
3在用记事本编写包a包b的程序,并用DOS命令行运行时。
要将两个类分别放在两个文件中,要先编译A.java再编译B.java,在编译时一定要在命令行中输入javacA.java–d.和javacB.java–d.才能自动打包;两个文件都编译完成以后,在命令行的父目录中输入javab.B来执行,输入javab.B.java。
3、思考题
1).什么是JVM,它的作用是什么?
JVM就是java虚拟机的英文简写,java虚拟机就是为任何的平台提供一个编译java程序的接口。
就是将编译的java程序翻译,以供不同的平台去识别。
2).如何理解PATH和CLASSPATH,,如何设置它们。
PATH和CLASSPATH分别是JavaJDK和JRE的路径。
设置是在计算机属性中的高级系统设置的环境变量,配置方法如下:
1先配置%JAVA_HOME%环境变量,路径为jdk的目录;
2配置path环境变量,路径为%JAVA_HOME%\bin;
3再配置classpath环境变量,路径为%JAVA_HOME%\jre\lib;
《Java技术》实验报告
实验二:
2016年10月11日
学院
计算机与信息学院
专业班级
姓名
成绩
课程
名称
Java技术
实验项目
名称
实验二类的封装、继承、多态
指导
教师
教师评语
教师签名:
年月日
一、实验目的
1.复习、理解OOP的三大特征——封装、继承和多态。
2.学会使用Java编写简单的类。
理解类的属性和方法。
3.掌握关键字private,protected,public的作用,掌握静态类,内部类的概念。
4.掌握多态的概念。
二、实验原理
分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:
(1)Point2D有两个整型成员变量x,y(分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x,y的初始化。
(2)Point2D有一个void型成员方法offset(inta,intb),它可以实现Point2D的平移。
(3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z(分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:
Point3D(intx,inty,intz)和Point3D(Point2Dp,intz),两者均可实现对Point3D的成员变量x,y,z的初始化。
(4)Point3D有一个void型成员方法offset(inta,intb,intc),该方法可以实现Point3D的平移。
(5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point3D的对象p3d1,p3d2,打印出他们之间的距离。
(提示:
java.lang.Math.sqrt()方法)
三、使用硬件、软件环境
PC计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装WindowsXP操作系统。
另外,使用JCreator,JDK1.6.0等软件
四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)
利用类的继承写一个point2D类,其子类是point3D。
子类Point3D的构造函数调用了父类的构造函数;计算平面两点的距离函数和计算空间两点的距离函数写在父类Point2D中,并且他们是静态方法,在子类继承后,在其主方法(主方法是静态的)中可以直接调用(或者通过类名调用);另外平移函数可以对点进行平移。
源程序如下:
classPoint2D{
intx,y;
publicPoint2D(intx,inty)//有参构造函数,对x,y初始化
{
this.x=x;
this.y=y;
}
voidoffset(inta,intb)//平移函数
{
x=x+a;
y=y+b;
}
publicstaticdoubledistance2D(Point2Da,Point2Db){returnMath.sqrt(Math.pow((a.x-b.x),2)+Math.pow((a.y-b.y),2));}//静态方法,求平面两点的距离
publicstaticdoubledistance3D(Point3Da,Point3Db){returnMath.sqrt(Math.pow((a.x-b.x),2)+Math.pow((a.y-b.y),2)+Math.pow((a.z-b.z),2));}//静态方法,求空间两点的距离
}
publicclassPoint3DextendsPoint2D{
intz;
Point3D(intx,inty,intz)//构造函数,对x,y,z初始化
{
super(x,y);
this.z=z;
}
Point3D(Point2Dp,intz)//构造函数,对x,y,z初始化
{
super(p.x,p.y);
this.z=z;
}
voidoffset(inta,intb,intc)//平移函数
{
x+=a;
y+=b;
z+=c;
}
publicstaticvoidmain(Stringargs[]){
Point2Dp2d1=newPoint2D(10,3);
Point2Dp2d2=newPoint2D(2,2);
Point3Dp3d1=newPoint3D(10,11,0);
Point3Dp3d2=newPoint3D(1,6,0);
Point3Dp3d3=newPoint3D(p2d1,16);
System.out.println("distance2D="+distance2D(p2d1,p2d2));
System.out.println("distance3D="+distance3D(p3d1,p3d2));
}
}
运行结果:
五、实验结论、分析、思考题与心得体会
通过本次实验,我有以下几方面的收获、认识和体会:
1、学会了类的继承、封装、多态的基本应用,学会了两个方法aqrt()和pow()在程序中的运用。
2、加深了Java中相关语法的认识:
①子类继承父类的非私有成员,但是不能继承构造方法,必须用super()来调用父类的构造方法。
② 构造方法可以通过形参的个数、类型、排列不同来重载。
③Math类属于java.lang包,并且pow()和sqrt()都是static静态方法,可以直接通过Math.pow()和Math.sqrt()来调用。
1Static静态方法只能直接调用静态成员,不能直接调用非静态成员。
3、思考题
1).什么是类的多态性。
接口的多种不同的实现方式即为多态。
同一段代码在不同的地方,会执行不同的操作。
《Java技术》实验报告
实验三:
2016年10月11日
学院
计算机与信息学院
专业班级
姓名
成绩
课程
名称
Java技术
实验项目
名称
实验三基于GUI的网络通信程序设计
指导
教师
教师评语
教师签名:
年月日
一、实验目的
1.掌握Java中GUI程序的编写,包括事件监听机制。
2.掌握Java的网络通信编程,ServerSocket,Socket类的使用。
3.掌握Java中多线程的编程,Thread类,Runnable接口的使用。
4.掌握用面向对象的方法分析和解决复杂问题。
二、实验原理
编写程序完成以下功能:
1.设计一个基于GUI的客户-服务器的通信应用程序,如图1,图2所示。
图1Socket通信服务器端界面
图2Socket通信客户端界面
2.图1为Socket通信服务器端界面,点击该界面中的【Start】按钮,启动服务器监听服务(在图1界面中间的多行文本区域显示“Serverstarting…”字样)。
图2为Socket通信客户端界面,点击该界面中的【Connect】按钮与服务器建立链接,并在图2所示界面中间的多行文本区域显示“Connecttoserver…”字样,当服务器端监听到客户端的连接后,在图1界面中间的多行文本区域追加一行“Clientconnected…”字样,并与客户端建立Socket连接。
3.当图1所示的服务器端和图2所示的客户机端建立Socket连接后,编程实现这两端的数据通信,每次将接收到对方的数据追加显示在多行文本框中。
三、思考题
1.对整个实验进行总结,写出实验心得。
2.在完成上述实验内容的基础上,尝试实现服务器端能够与多个客户机进行通信。
三、使用硬件、软件环境
PC计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装WindowsXP操作系统。
另外,使用JCreator,JDK1.6.0等软件
四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)
①分别编写两个文件Client.javaServer.java;这两个代码的结构十分相似,都是先写一个主类,再写另一个实现类,主类通过创建实现类的对象来调用其构造方法来实现功能。
实现类中写了很多方法,也写了很多内部类,方法层层调用。
实现类在构造方法中写了调用了实现GUI的函数,也为按钮注册了监听器。
在不同的内部类中写了不同监听器所调用的actioPerformed()方法。
②在服务器中创建ServerSocket对象来接受客户端的连接请求,并指定端口号,客户端通过Socket对象来向服务器的ip和端口发送连接请求。
服务器在接到连接请求后,服务器会创建一个新的Socket对象与客户端的Socket对象连接。
连接成功后通过IO流来通信,服务器的输入流是客户端的输出流,服务器的输出流时客户端的输入流。
服务器代码如下:
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjava.io.*;
import.*;
importjavax.swing.*;
publicclassServer{
publicstaticvoidmain(String[]args){
MyFrameserve=newMyFrame();
serve.setVisible(true);
serve.setResizable(false);//设置此窗体是否可由用户调整大小
serve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭操作
}
}
classMyFrameextendsJFrame{
JTextFieldport;
JButtonstart;
JTextAreacontent;
JTextFieldcin;
JButtonsay;
Socketsocket;
MyFrame(){
init();
StartListensListen=newStartListen();
SayListenstListen=newSayListen();
start.addActionListener(sListen);//为按钮start注册一个监听器
say.addActionListener(stListen);//为按钮say注册一个监听器
}
voidinit(){
setLayout(newFlowLayout());//设置窗体为流式布局
setSize(400,400);
setLocation(400,100);
add(newJLabel("Port:
"));
port=newJTextField("8888",25);
add(port);
start=newJButton("Start");
add(start);
content=newJTextArea(15,35);
JScrollPanescroll=newJScrollPane(content);//设置滚动条
add(scroll);
add(newJLabel("Say:
"));
cin=newJTextField(26);
add(cin);
say=newJButton("Say");
add(say);
}
classStartListenimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
start.setEnabled(false);
try{
ServerSockets=newServerSocket(Integer.parseInt(port.getText()));//创建一个服务器套接字对象s,形参为从port文本框中读取的整型(端口号)
socket=s.accept();
PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);//创建一个打印输出流对象,其形参为从套接字socket对象中获取的输出流
out.println("Connected");
content.append("Clientconnected"+"\n");//对两个字符串进行拼接
ServerThreadst=newServerThread();//创建一个ServerThread对象st,并调用其构造方法
st.start();//启动一个线程,并调用run()方法
}
catch(Exceptionex){
}
}
}
classSayListenimplementsActionListener{
Stringstr;
publicvoidactionPerformed(ActionEvente){
try{PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);//创建一个打印输出流,形参为从套接字socket中获取的输出流
str=cin.getText();
if(!
str.isEmpty()){
out.println(newDate()+"\n"+str);//打印输出日期和发送的消息(str)
content.append(newDate()+"\nme:
"+str+"\n");
out.flush();//清空缓存区
}
cin.setText("");
}
catch(Exceptionex){
}
}
}
classServerThreadextendsThread{
publicvoidrun(){
try{
BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));//创建一个缓冲输出流,其形参为从套接字socket中获取的输入流
Stringstr;
while(true){
str=in.readLine();//按行读取
content.append(str+"\n");
}
}
catch(Exceptionex){
}
}
}
}
客户端代码如下:
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjava.io.*;
import.*;
importjavax.swing.*;
importjava.util.Calendar;
publicclassClient{
publicstaticvoidmain(String[]args)
{
MyFrameclient=newMyFrame();
client.setVisible(true);
client.setResizable(false);//设置此窗体是否可由用户调整大小
client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭操作
}
}
classMyFrameextendsJFrame
{
JTextFieldip;
JTextFieldport;
JTextFieldcin;
JTextAreacontent;
JButtonconnect;
JButtonsay;
Socketsocket;
MyFrame(){
init();
ConnectListencListener=newConnectListen();
SayListensListener=newSayListen();
connect.addActionListener(cListener);//注册监听器
say.addActionListener(sListener);//注册监听器
}
voidinit(){
setLayout(newFlowLayout());//设置窗体为流式布局
setSize(4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 合工大 JAVA 实验 报告