版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上Java技术实验报告实验一: 2016 年10 月 11 日学院计算机与信息学院专业班级姓名成绩课程名称Java技术实验项目名 称 实验一 Java开发环境的安装与配置指导教师教师评语 教师签名: 年 月 日一、实验目的1 掌握JDK的安装步骤(有条件的话可以在Linux系统下安装)。2 理解环境变量PATH, CLASSPATH的作用,以及它们的设置方法(Win98和Win2000/XP下的不同设置方法)。3 熟悉TextPad(或JCreator)编辑环境,编写简单的Application程序,并编译和解释执行。4 记录编译和执行Java程序当中的系统错误信息提示
2、,并给出解决办法。二、实验原理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操作系统。另外,使用
3、JCreator,JDK1.6.0等软件四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)1 安装Jdk1.6.0集成环境,安装成功后,配置path,classpath路径,让用户在任何目录下均可用到Java的系统资源。 先配置%JAVA_HOME%环境变量,路径为jdk的目录; 配置path环境变量,路径为%JAVA_HOME%bin; 再配置classpath环境变量,路径为%JAVA_HOME%jrelib;2 在记事本编写helloworld程序,并在DOS命令行下编译运行。 在JCreator中写出如下代码,并保存为HelloWorld.java:public class
4、 HelloWorldpublic static void main(String args)System.out.println("HelloWorld!"); 在命令行中进入到该文件路径,并输入javac HelloWorld.java完成编译,再输入java HelloWorld完成运行。3 用记事本编写包a包b的程序,并用DOS命令行运行。执行过程:将两个记事本,改名为A.java和B.java,并写出如下程序:Ajava文件的源程序:package a;public class Apublic void say()System.out.println("
5、Succeed!");B.java文件中的源程序:package b;import a.*;public class Bpublic static void main(String args)A aa=new A();aa.maker();先在DOS命令行中编译A.java文件,在命令行中输入javac A.java d .再编译B.java文件,在命令行中输入javac B.java -d .在命令行中输入java b.B 即可完成。五、实验结论、分析、思考题与心得体会通过本次实验,我有以下几方面的收获、认识和体会:1、 学会了在记事本和命令行,JCreator,等环境下编写程序及
6、运行程序的方法;2、 学会了如何安装JDK,以及如何配置%JAVA_HOME%,path,classpath等环境变量3、 加深了Java中相关语法的认识: 文件名必须与public类的类名相同,并且一个文件中只允许有一个public类。 Java对大小写敏感,如String 中的S就严格区分大小写;对中文标点符号和英文标点符号敏感,java只能识别英文标点符号。 在用记事本编写包a包b的程序,并用DOS命令行运行时。要将两个类分别放在两个文件中,要先编译A.java再编译B.java,在编译时一定要在命令行中输入javac A.java d .和javac B.java d . 才能自动打包
7、;两个文件都编译完成以后,在命令行的父目录中输入java b.B 来执行,输入java b.B.java 。3、思考题1).什么是JVM,它的作用是什么?JVM就是java虚拟机的英文简写,java虚拟机就是为任何的平台提供一个编译java程序的接口。就是将编译的java程序翻译,以供不同的平台去识别。2).如何理解PATH和CLASSPATH,,如何设置它们。PATH和CLASSPATH分别是Java JDK和JRE的路径。设置是在计算机属性中的高级系统设置的环境变量,配置方法如下: 先配置%JAVA_HOME%环境变量,路径为jdk的目录; 配置path环境变量,路径为%JAVA_HOME
8、%bin; 再配置classpath环境变量,路径为%JAVA_HOME%jrelib;Java技术实验报告实验二: 2016 年10 月 11 日学院计算机与信息学院专业班级姓名成绩课程名称Java技术实验项目名 称实验二 类的封装、继承、多态指导教师教师评语 教师签名: 年 月 日一、实验目的1. 复习、理解OOP的三大特征封装、继承和多态。2. 学会使用Java编写简单的类。理解类的属性和方法。3. 掌握关键字private,protected,public的作用,掌握静态类,内部类的概念。4. 掌握多态的概念。二、实验原理分别编写两个类Point2D,Point3D来表示二维空间和三维
9、空间的点,使之满足下列要求:(1) Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。(2) Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。(3) Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z (分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),两者均可实现对Point3D的成员变量x, y,
10、z的初始化。(4) Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现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等软件四、实验过程、步骤及原始记
11、录(算法、原程序、测试结果,分析等)利用类的继承写一个point2D类,其子类是point3D。子类Point3D的构造函数调用了父类的构造函数;计算平面两点的距离函数和计算空间两点的距离函数写在父类Point2D中,并且他们是静态方法,在子类继承后,在其主方法(主方法是静态的)中可以直接调用(或者通过类名调用);另外平移函数可以对点进行平移。源程序如下:class Point2D int x,y; public Point2D(int x,int y) /有参构造函数,对x,y初始化 this.x=x;this.y=y; void offset(int a,int b) /平移函数 x=x+
12、a; y=y+b; public static double distance2D(Point2D a,Point2D b )return Math.sqrt(Math.pow(a.x-b.x),2)+Math.pow(a.y-b.y),2); /静态方法,求平面两点的距离public static double distance3D(Point3D a,Point3D b )return Math.sqrt(Math.pow(a.x-b.x),2)+Math.pow(a.y-b.y),2)+Math.pow(a.z-b.z),2);/静态方法,求空间两点的距离public class Poi
13、nt3D extends Point2Dint z;Point3D(int x,int y,int z)/构造函数,对x,y,z初始化 super(x,y);this.z=z;Point3D(Point2D p,int z)/构造函数,对x,y,z初始化 super(p.x,p.y);this.z=z;void offset(int a,int b,int c)/平移函数 x+=a;y+=b;z+=c;public static void main(String args)Point2D p2d1=new Point2D(10,3);Point2D p2d2=new Point2D(2,2);
14、Point3D p3d1=new Point3D(10,11,0);Point3D p3d2=new Point3D(1,6,0);Point3D p3d3=new Point3D(p2d1,16);System.out.println("distance2D="+distance2D(p2d1,p2d2);System.out.println("distance3D="+distance3D(p3d1,p3d2);运行结果:五、实验结论、分析、思考题与心得体会通过本次实验,我有以下几方面的收获、认识和体会:1、学会了类的继承、封装、多态的基本应用,学会
15、了两个方法aqrt()和pow()在程序中的运用。2、加深了Java中相关语法的认识:子类继承父类的非私有成员,但是不能继承构造方法,必须用super()来调用父类的构造方法。 构造方法可以通过形参的个数、类型、排列不同来重载。 Math类属于java.lang包,并且pow()和sqrt()都是static静态方法,可以直接通过Math.pow()和Math.sqrt()来调用。 Static静态方法只能直接调用静态成员,不能直接调用非静态成员。3、思考题1).什么是类的多态性。接口的多种不同的实现方式即为多态。同一段代码在不同的地方,会执行不同的操作。Java技术实验报告实验三: 2016
16、 年10 月 11 日学院计算机与信息学院专业班级姓名成绩课程名称Java技术实验项目名 称实验三 基于GUI的网络通信程序设计指导教师教师评语 教师签名: 年 月 日一、实验目的1. 掌握Java中GUI程序的编写,包括事件监听机制。2掌握Java的网络通信编程,ServerSocket,Socket类的使用。3掌握Java中多线程的编程,Thread类,Runnable接口的使用。4掌握用面向对象的方法分析和解决复杂问题。二、实验原理编写程序完成以下功能:1.设计一个基于GUI的客户-服务器的通信应用程序,如图1,图2所示。图1 Socket通信服务器端界面图2 Socket通信客户端界面
17、2.图1为Socket通信服务器端界面,点击该界面中的【Start】按钮,启动服务器监听服务(在图1界面中间的多行文本区域显示“Server starting”字样)。图2为Socket通信客户端界面,点击该界面中的【Connect】按钮与服务器建立链接,并在图2所示界面中间的多行文本区域显示“Connect to server”字样,当服务器端监听到客户端的连接后,在图1界面中间的多行文本区域追加一行“Client connected”字样,并与客户端建立Socket连接。3.当图1所示的服务器端和图2所示的客户机端建立Socket连接后,编程实现这两端的数据通信,每次将接收到对方的数据追加
18、显示在多行文本框中。三、思考题1. 对整个实验进行总结,写出实验心得。2. 在完成上述实验内容的基础上,尝试实现服务器端能够与多个客户机进行通信。三、使用硬件、软件环境PC 计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装WindowsXP操作系统。另外,使用JCreator,JDK1.6.0等软件四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)分别编写两个文件Client.java Server.java;这两个代码的结构十分相似,都是先写一个主类,再写另一个实现类,主类通过创建实现类的对象来调用其构造方法来实现功能。实现类中写了很多方法,也写了很多内部类
19、,方法层层调用。实现类在构造方法中写了调用了实现GUI的函数,也为按钮注册了监听器。在不同的内部类中写了不同监听器所调用的actioPerformed()方法。在服务器中创建ServerSocket对象来接受客户端的连接请求,并指定端口号,客户端通过Socket对象来向服务器的ip和端口发送连接请求。服务器在接到连接请求后,服务器会创建一个新的Socket对象与客户端的Socket对象连接。连接成功后通过IO流来通信,服务器的输入流是客户端的输出流,服务器的输出流时客户端的输入流。服务器代码如下:import java.awt.*;import java.awt.event.*;import
20、java.util.*;import java.io.*;import .*;import javax.swing.*;public class Serverpublic static void main(String args)MyFrame serve = new MyFrame();serve.setVisible(true);serve.setResizable(false); /设置此窗体是否可由用户调整大小serve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /设置默认关闭操作class MyFrame extends JFra
21、meJTextField port;JButton start;JTextArea content;JTextField cin;JButton say;Socket socket;MyFrame()init();StartListen sListen = new StartListen();SayListen stListen = new SayListen();start.addActionListener(sListen); /为按钮start注册一个监听器say.addActionListener(stListen); /为按钮say注册一个监听器void init() setLayo
22、ut(new FlowLayout(); /设置窗体为流式布局setSize(400,400);setLocation(400,100);add(new JLabel("Port:");port = new JTextField("8888",25);add(port);start = new JButton("Start");add(start);content = new JTextArea(15,35);JScrollPane scroll = new JScrollPane(content); /设置滚动条add(scroll
23、);add(new JLabel("Say:");cin = new JTextField(26);add(cin);say = new JButton("Say");add(say);class StartListen implements ActionListenerpublic void actionPerformed(ActionEvent e) start.setEnabled(false);try ServerSocket s = new ServerSocket(Integer.parseInt(port.getText(); /创建一个服
24、务器套接字对象s,形参为从port文本框中读取的整型(端口号)socket = s.accept();PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true);/创建一个打印输出流对象,其形参为从套接字socket对象中获取的输出流out.println("Connected"); content.append("Client connected"+"n"); /对两个字符串进行拼
25、接ServerThread st = new ServerThread(); /创建一个ServerThread对象st,并调用其构造方法st.start(); /启动一个线程,并调用run()方法 catch (Exception ex) class SayListen implements ActionListenerString str;public void actionPerformed(ActionEvent e)try PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socke
26、t.getOutputStream(),true);/创建一个打印输出流,形参为从套接字socket中获取的输出流str=cin.getText();if(!str.isEmpty()out.println(new Date()+"n"+str); /打印输出日期 和 发送的消息(str)content.append(new Date()+" n me:"+str+"n");out.flush(); /清空缓存区cin.setText(""); catch (Exception ex) class ServerTh
27、read extends Threadpublic void run()try BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(); /创建一个缓冲输出流,其形参为从套接字socket中获取的输入流String str;while(true)str = in.readLine(); /按行读取content.append( str+"n"); catch (Exception ex) 客户端代码如下:import java.awt.*;import java
28、.awt.event.*;import java.util.*;import java.io.*;import .*;import javax.swing.*;import java.util.Calendar;public class Clientpublic static void main(String args)MyFrame client=new MyFrame();client.setVisible(true); client.setResizable(false); /设置此窗体是否可由用户调整大小client.setDefaultCloseOperation(JFrame.EX
29、IT_ON_CLOSE); /设置关闭操作class MyFrame extends JFrame JTextField ip;JTextField port;JTextField cin;JTextArea content;JButton connect;JButton say;Socket socket;MyFrame()init();ConnectListen cListener=new ConnectListen();SayListen sListener = new SayListen();connect.addActionListener(cListener); /注册监听器say
30、.addActionListener(sListener); /注册监听器void init()setLayout(new FlowLayout(); /设置窗体为流式布局setSize(440,500);setLocation(800,100);add(new JLabel("Server:ip");ip=new JTextField("127.0.0.1",8);add(ip);add(new JLabel("Server:port");port=new JTextField("8888",8);add(por
31、t);connect=new JButton("connect");add(connect);content=new JTextArea(16,35);JScrollPane scroll=new JScrollPane(content); /设置滚动条add(scroll);add(new Label("Say:");cin=new JTextField(25);add(cin);say=new JButton("say");add(say);class ConnectListen implements ActionListener
32、int portNum;public void actionPerformed(ActionEvent e)connect.setEnabled(false); /按下connect按钮后,connect不可再次点击try content.setText("Connect to server.n"); /在文本区中显示"Connect to server.n"portNum =Integer.parseInt(port.getText(); /读取port文本框中的字符串,并将字符串转化为整型赋给portNumsocket = new Socket(ip
33、.getText(),portNum); /定义对象socket,并指定主机号(host)和端口号portNumClientThread ct = new ClientThread(); /定义一个ClientThread类的对象ctct.start(); /启动一个线程,并调用ClientThread类中的run()方法 catch (Exception ex) class SayListen implements ActionListenerString str;public void actionPerformed(ActionEvent e)try PrintWriter out =
34、new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true); /从socket获取字节输出流,并将其最终转化为PrintWriterstr=cin.getText(); /从文本框中获取字符串赋给strif(!str.isEmpty()out.println(new Date()+ "n"+ str); /打印日期和strcontent.append(new Date()+"n me:"+str+"n");out.flush(); /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度物流服务合同:某电商企业与物流公司合作2篇
- 全新智能医疗设备研发与生产合同(2024版)2篇
- 2024年度演艺经纪合同(详细演出内容、报酬和分成比例)3篇
- 二零二四年度煤矿安全生产监管服务合同3篇
- 2024年度体育赛事组织与推广合同
- 2024年度供需双方沙子石子购销合同协议书3篇
- 建筑垃圾资源化处理承包合同20243篇
- 2024年云计算服务与技术支持合同6篇
- 2024年度融资租赁合同:飞机租赁与购买option协议2篇
- 2024年度游戏开发与运营合同.(2024版)2篇
- 11468工作岗位研究原理与应用第2章
- 习作我最喜欢的玩具说课稿
- 统编初中语文教材七年级上册第三单元解析及教学建议
- ZFWG200变速箱及系列驱动桥结构原理及性能介绍讲义课件
- 微课设计与制作《微课的设计思路与流程》课件
- 水泥助磨剂简介课件
- 新时代乡村振兴战略课件
- 行政执法人员培训基础知识课件
- CSM工法等厚度水泥土搅拌墙工程(监理)作业指导书
- 警械的正确使用以及法律适用课件
- 汽车点火系统故障诊断毕业论文
评论
0/150
提交评论