java实验报告心得体会

2023-06-19

受到生活、学习、人和物的启发,我们会得到一些心得体会,将这些心得体会记录下来,能让我们获得更多新的思想。如何写出吸引人的心得体会呢?以下是小编整理的《java实验报告心得体会》,欢迎大家借鉴与参考,希望对大家有所帮助!

第一篇:java实验报告心得体会

java上机实验心得体会报告

北京联合大学信息学院

“面向对象程序设计”课程上机实验报告

题目:

JAVA上机实验心得体会 姓名(学号):

专业:计算机科学与技术

编制时间:

2012年12月19日

版本:

1.0.0

指导教师:

北京联合大学-信息学院编制 实验1 熟悉Java运行环境

实验目的:熟悉JDK环境和操作,编写简单的Java应用程序。

心得体会:在该实验中,我碰到的问题是JDK环境变量的设置。解决方法是通过查阅资料书和网上搜索相关解决方法及同学的有力帮助。 实验2 选择语句练习

实验目的:正确理解并能够熟练操作和使用Java的if和switch语句。

心得体会:我个人感觉有了C的编程基础,if和switch这些简单的流程控制语句运用起来比较轻松,实现简单的逻辑运算也跟C非常相近,所以上手比较快。但是在这次程序中,首次涉及到了java程序的数据输入,与C区别很大。但经过老师的讲解和查阅相关资料,基本明白相关的使用规则和注意事项。在第二个小题中还涉及到了charAt()方法,经查阅JDK文档,知道charAt()方法返回一个位于提供给它的参数索引处的字符,如: str.chatAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符。我运用此方法解决了比较字符串间首字母异同的问题。

实验3 迭代练习

实验目的:正确理解并能够熟练操作和使用Java的for、while、do..while语句。 心得体会:在该实验中,我学会了为具体操作选择最合适的循环语句及for、while、do..while语句的相互转换使用。最重要的是,明白了JAVA程序中,定义方法中的局部变量时一定要赋初始值,否则编译不能通过会报错;但类中的成员变量则不一定需要。如我在实验3main()方法定义的整型局部变量command,当不初始化则不能通过编译。原因是局部变量不能有JVM自动赋给相关的默认值,而成员变量可以。 实验4 方法的实现练习

实验目的:声明、定义和调用方法,理解实参和形参的含义。

心得体会:在该实验中,我掌握如何写方法、调用方法,并掌握如何向方法中传递信息和从方法中返回信息。方法声明为非void(构造方法除外)则需要用return语句返回一个相应类型的返回值。

实验5 简单类型数组练习

实验目的:学习创建简单类型的数组,并能用循环语句处理数组。

心得体会:通过该实验,我学会了如何让建立简单类型的数组,并掌握了将数组作为方法的传入参数和返回值。在该实验中,遇到的问题主要是如何将一个连续的多位数在存入数组时,每个数组元素只对应改多位数的一个组成数。我解决的方法如下: for(i=0; i<6; i++){ n[i] = aa%10; //aa%10的结果是aa的末尾数,将多位数aa的末尾数赋给a[i] aa = (int)aa/10; //对aa/10的结果强制取整,去掉了aa的末尾数,以便对下一位数的存数。 }

实验6 类和对象的练习

实验目的:正确理解并能够熟练操作和使用Java的类、对象和方法。 心得体会:我学会了如何建立类和对象,分别输出其中包含的成员值;以及分别引用各方法,实现不同的操作。在该程序中,我进一步了解了如何定义成员方法和成员属性以及相关方法的调用。特别是我掌握了利用构造方法对成员属性赋初始值。值得一提的是,我在相应的程序中运用了toUpperCase方法,经查看JDK文档知道该方法的作用是返回一个所有字母都被转化为大写字母字符串。 实验7 类的实现

实验目的:使用统一建模语言(UML)设计类,并实现类。

心得体会:通过该实验,我学会了使用public、private控制访问及其访问权限;体会了static关键字的作用。并对JAVA程序中的类及面向对象的编程思想有了更进一步的了解。 实验8 继承的练习

实验目的:正确理解并能够熟练操作和使用Java类的继承关系。

心得体会:理解了继承的含义,并使用UML符号设计了继承结构;掌握了用Java实现继承关系;学会了区分方法重写和方法重载;并深入理解了abstract 和 final修饰符的作用。用final标记的变量只能赋值一次,标记的类不可被继承,方法不可被子类重写。用关键字extends表继承,例如子类A继承了父类B则可写作 class A extends B。在这些概念性知识点弄明白后,在解决实际问题时,碰到了输入年月日计算车龄的问题,我的解决办法如下: public int age(int year) {

int age;

int a1 = (int)(time/10000); //(int)time/10000是将8位数表示的生产年月日强制转换成四位数表示的年

int a2 = (int)(year/10000); //将当前年月日转换为年

age = a2 - a1 +1;//计算车龄

return age; } 实验9 抽象类、接口练习

实验目的:综合运用接口,类的知识。

心得体会:在该实验中,我掌握了接口定义,以及类实现接口。接口用interface关键字定义,在接口中,可以用abstract是修饰方法的,也可以去掉abstract,编译时会默认为抽象方法。类实现接口可用implements表示,例如class Circle implements Shape表示,Circle类实现了接口Shape。 实验10 多态练习

实验目的:理解并使用面向对象的特征:多态。

心得体会:在实验10中,我基本掌握了多态的句柄、多态方法的定义。在改程序中,我遇到了要求随机产生一个图形的难题,通过网上查阅资料,利用系统函数Math.random()经一系列的运算处理来随机产生一个图形解决了该难题,具体的程序如下: public static void main(String[] args)

{

Circle cir = new Circle(9);

Square squ = new Square(4);

Shape shape;

int r;

r = (int)(Math.random()*2);//用Math.random()方法产生0.00到1.00的随机数,乘2取整后非0即1

if(r == 0)

shape = cir;

else

shape = squ;

} shape.testShape(shape); //同一条语句产生不同的执行结果,多态性。

实验11 多线程处理

实验目的:理解线程的基本概念。

心得体会:通过该实验,基本能够理解线程的运行了。学会调用Thread类中的系统函数以及掌握这些函数的作用是难点, setName()是设置线程名字,start()是开辟一条新线程,Thread.currentThread().getName()是获得正在执行的线程的名字,Thread.currentThread().getId()是thread类中返回该线程的标识符的方法,Thread.currentThread().getPriority()是thread类中返回线程的优先级的方法。

实验12 I/O及文件处理

实验目的:掌握并使用Java中的I/O和文件。

心得体会:对于该实验,由于比较难,只是基本掌握了文件读写的方法和规则,还有待17周JAVA实训时继续攻坚克难。

结语:在这一系列的实验中,我基本掌握了Java的编程规则、知识要点和一些小技巧,特别是对面向对象的编程思想和风格有了进一步的认识和体会。同时,因正确的编出程序而带来的成就感让我对编程更加感兴趣。对于在这些实验过程中,请教老师、同学互助、查阅资料等基本的学习方式,使我更加领悟到集体和团队的力量,也树立了敢于攻坚的信心。

第二篇:Java实验报告

《Java简易聊天室》

实验目的:实现简单的客服端与服务端通讯,进一步巩固,加深对Java语言基础知识的了解,将理论与实际相结合。

实验要求:能相互之间发送消息,并进行简单的异常处理。

聊天室截图与说明:

客户端

服务端

将客服端与服务端程序同时运行,此时会显示出客户端与服务端界面。在客户端界面上点击“连接”按钮,即可使客户端与服务端进程建立连接。在文本框中输入将要发送的消息,点击“发送”按钮,即可将消息发送到对应端口。当服务端发送消息时,服务端便相当于客户端。当需要终止连接时,关闭相应窗口即可。

设计概要:类/接口/函数说明

1. public class ClientUI extends Jframe{}

public class ServerUI extends Jframe{}

ClientUI与ServerUi继承Frame类构建客户端与服务器端窗口。

2. class ChatClient extends Thread{}

class SvrCom extends Thread{}

通讯类ChatClient/SvrCom负责守候数据到来

3. public void run()

用于监听客户端/服务器端发送来的信息,运行连接

4.public void sendMsg(String msg) {// 用于发送信息

try {

out.println("【客户端】" + msg);

} catch (Exception e) {

System.out.println(e);

}

} public void sendMsg(String msg) {// 用于发送信息

try {

out.println("【服务器】" + msg);// 把信息写入输出流

} catch (Exception e) {

System.out.println(e);

} } 5. try {

msg = in.readLine();// 从in对象上读数据信息

} catch (SocketException ex) {

System.out.println(ex);

break;

} catch (Exception ex) {

System.out.println(ex);

}

if (msg != null && msg.trim() != "") {

System.out.println(">>" + msg);

ui.mainArea.append(msg + " ");

}

简单的异常处理

6.public ChatClient(String ip, int port, ClientUI ui) {// 初始化ChatClient类

this.ui = ui;

try {

sc = new Socket(ip, port); // 创建sc, 用服务器ip和端口作参数

System.out.println("已顺利联接到服务器。");

out = new PrintWriter(sc.getOutputStream(), true);

in = new BufferedReader(new InputStreamReader(sc.getInputStream()));

} catch (Exception e) {

System.out.println(e);

}

start();

public SvrCom(ServerUI ui) { // 初始化SvrCom类

this.ui = ui;

ui.setServer(this);

try {

soc = new ServerSocket(6666); // 开设服务器端口6666

System.out.println("启动服务器成功,等待端口号:6666");

client = soc.accept();// 当客户机请求连接时,创建一条链接

System.out.println("连接成功!来自" + client.toString());

in = new BufferedReader(new InputStreamReader(client

.getInputStream()));

out = new PrintWriter(client.getOutputStream(), true);

} catch (Exception ex) {

System.out.println(ex);

}

start();

自我评价或总结:经过本次实验,进一步了解了客户端与服务器之间的通信机制,对以后的编程实践垫定了基础。同时还巩固了GUI图形界面知识,更重要的是它使我对网络编程有了一定的了解,也学到了不少知识。

附:

源代码:import java.io.*; import java.net.*; import javax.swing.*; import java.awt.event.*; import java.awt.*;

public class ClientUI extends JFrame { JTextArea mainArea;

JTextArea sendArea;

ChatClient client; JTextField ipArea; JButton btnLink; public void setClient(ChatClient client) { this.client = client; } public ClientUI() { super("客户端"); Container contain = getContentPane(); contain.setLayout(new BorderLayout()); mainArea = new JTextArea(); JScrollPane mainAreaP = new JScrollPane(mainArea); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); sendArea = new JTextArea(3, 8); JButton sendBtn = new JButton("发送"); sendBtn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

client.sendMsg(sendArea.getText());

mainArea.append("【客户端】" + sendArea.getText() + " ");

sendArea.setText("");

} }); JPanel ipPanel = new JPanel(); ipPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10)); ipPanel.add(new JLabel("服务器:")); ipArea = new JTextField(12); ipArea.setText("127.0.0.1"); ipPanel.add(ipArea); btnLink = new JButton("连接"); ipPanel.add(btnLink); btnLink.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

client = new ChatClient(ipArea.getText(), 6666, ClientUI.this);

ClientUI.this.setClient(client);

} });

panel.add(sendBtn, BorderLayout.EAST);

panel.add(sendArea, BorderLayout.CENTER);

contain.add(ipPanel, BorderLayout.NORTH);

contain.add(mainAreaP, BorderLayout.CENTER);

contain.add(panel, BorderLayout.SOUTH);

setSize(500, 300);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

public static void main(String[] args) {

ClientUI ui = new ClientUI(); } }

class ChatClient extends Thread { Socket sc; BufferedReader in; PrintWriter out; ClientUI ui;

public ChatClient(String ip, int port, ClientUI ui) {

this.ui = ui;

try {

sc = new Socket(ip, port);

System.out.println("已顺利联接到服务器。");

out = new PrintWriter(sc.getOutputStream(), true);

in = new BufferedReader(new InputStreamReader(sc.getInputStream()));

} catch (Exception e) {

System.out.println(e);

}

start(); }

public void run() {

String msg = "";

while (true) {

try {

msg = in.readLine();

} catch (SocketException ex) {

System.out.println(ex);

break;

} catch (Exception ex) {

System.out.println(ex);

}

if (msg != null && msg.trim() != "") {

System.out.println(">>" + msg);

ui.mainArea.append(msg + " ");

}

} }

public void sendMsg(String msg) {

try {

out.println("【客户端】" + msg);

} catch (Exception e) {

System.out.println(e);

} } } import java.io.*; import java.net.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * 服务端界面ServerUI */ public class ServerUI extends JFrame { JTextArea mainArea;

JTextArea sendArea;

JTextField indexArea;

SvrCom server;

public void setServer(SvrCom server) {

this.server = server; }

public ServerUI() {

super("服务器端");

Container contain = getContentPane();

contain.setLayout(new BorderLayout());

mainArea = new JTextArea();

JScrollPane mainAreaP = new JScrollPane(mainArea); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); sendArea = new JTextArea(3, 8); JButton sendBtn = new JButton("发送"); sendBtn.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent ae) {

server.sendMsg(sendArea.getText());

mainArea.append("【服务器】sendArea.getText() + " ");

sendArea.setText("");

}

}); JPanel tmpPanel = new JPanel(); indexArea = new JTextField(2); indexArea.setText("0"); tmpPanel.add(sendBtn); tmpPanel.add(indexArea); panel.add(tmpPanel, BorderLayout.EAST); panel.add(sendArea, BorderLayout.CENTER); contain.add(mainAreaP, BorderLayout.CENTER); contain.add(panel, BorderLayout.SOUTH); setSize(500, 300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { ServerUI ui = new ServerUI(); SvrCom server = new SvrCom(ui); }

} class SvrCom extends Thread

{ Socket client; ServerSocket soc; BufferedReader in; PrintWriter out; ServerUI ui; // ChatServer server; public SvrCom(ServerUI ui) {

" +

this.ui = ui; ui.setServer(this); try {

soc = new ServerSocket(6666);

}

System.out.println("启动服务器成功,等待端口号:6666");

client = soc.accept();

System.out.println("连接成功!来自" + client.toString());

in = new BufferedReader(new InputStreamReader(client

.getInputStream()));

out = new PrintWriter(client.getOutputStream(), true); } catch (Exception ex) {

System.out.println(ex); } start(); } public void run() { String msg = ""; while (true) {

try {

msg = in.readLine();

} catch (SocketException ex) {

System.out.println(ex);

break;

} catch (Exception ex) {

System.out.println(ex);

}

if (msg != null && msg.trim() != "") {

System.out.println(">>" + msg);

ui.mainArea.append(msg + " ");

} } } public void sendMsg(String msg) { try {

out.println("【服务器】" + msg); } catch (Exception e) {

System.out.println(e); } }

第三篇:Java上机实验报告

Homework3实验报告

一、实验目的与要求

1、掌握Java中类和接口的基本知识;

2、继承的基本知识;

3、集合的基本操作

二、实验内容 1.PIMCollection 类

创建一个可以管理PIMEntities实体的集合,该类实现了Collection接口,且必须实现了以下方法: (1).getNotes(); 返回PIMCollection中所有的PIMNote项,如果不包含PIMNote项,则返回一个空集合

(2).getTodos(); 返回集合PIMCollection中所有的PIMTodo项,如果不包含PIMTodo项,则返回一个空集合

(3).getAppointment(); 返回集合PIMCollection中所有的PIMAppointment项,如果不包含PIMAppointment项。则返回一个空集合 (4).getContacts(); 返回结合PIMCollection中所有的PIMContact项,如果不包含PIMContact项,则返回一个空集合

(5).getItemsForDate(Date d); 返回集合PIMCollection中所有与d匹配的PIMEntities,如果没有匹配d的项,

则返回一个空集合

(只有PIMTodo和PIMAppointment项,因为PIMNote和PIMContact跟日期没有关系)。

2.TestPIMCollection类(自己的测试类)

向PIMCollection集合类中加入了一些PIMEntity实体类,并用PIMCollection类中实现的方法分别筛选出了其中的PIMNote、PIMTodo、PIMAppointment、PIMContact、符合指定日期d的集合并打印输出。

三、实验器材

计算机+windows操作系统+eclipse

四、实验步骤

1.程序源代码(压缩在文件夹里) 2.编译执行程序 3.记录执行结果

五、实验结果

1.TestPIMCollection的测试代码:

2.程序的执行结果:

如图所示:程序分别输出了Todo、Note、Appointment、Contact、以及匹配指定日期的结合的结果。

六、实验小结

1、熟悉了Java集合的基本内容和操作,也包括了泛型的一些知识。

2、通过这个实验巩固了java的基础知识:类和接口的有关知识,继承的应用。

3、掌握了在eclipse下编译执行Java程序的知识。

4、通过几次的编程,熟悉了java的编程规则。

5、综合应用所学知识完成java程序的分析、设计、调试和总结,为以后编写更复杂的java程序打下了很好的基础。

第四篇:JAVA实验报告(1)

实验报告

一、 实验目的

巩固复习课上所讲内容,进一步熟悉面向对象编程。

二、 实验内容

编写程序求点到原点的距离

三、 程序清单及运行结果

abstractclass Distance

{

abstract int distance();

}

public class Point{

public double x,y;

public Point(double i,double j){

x=i;

y=j;

}

public double distance(){

return Math.sqrt(x*x+y*y);

}

public static void main(String args[]){

Point p=new Point(1,1);

System.out.println("p.distance()="+p.distance());p=new Point3d(1,1,1);

System.out.println("p.distance()="+p.distance());}

}

class Point3d extends Point{

public double z;

public Point3d (double i,double j,double k){

super(i,j);

z=k;

}

public double distance(){

return Math.sqrt(x*x+y*y+z*z);

}

}

运行结果:

p.distance()=1.4142135623730951

p.distance()=1.732050807568877

2四、 实验中出现的问题及解决方法

本次实验比较简单,没有出现较大的问题。

五、 实验总结

通过本次实验,可以很好的将老师上课讲授的内容进行回顾,更深刻的理解面向对象编程,对以后的学习有很大帮助。实验中需要注意的问题是方法重载的相关概念以及明晰方法重载与方法重写的异同点;对super关键字的正确使用。

第五篇:Java程序设计实验报告

实验一

实验题目:从键盘上读入10个字符串存入数组a中,然后输出这10个字符串中最大字符串和最小字符串。

实验代码:

public class StrPro {

public static void main(String[] args) {

String str[] = new String[5]; System.out.println("Please input 10 strings:"); int i; String max,min; for(i=0;i<5;i++){

} max = str[0]; min = str[0]; for(i=0;i

}

}

} } if(min.compareTo(str[i])>0){ } min = str[i]; System.out.println("最大的字符串为:"+max); System.out.println("最小的字符串为:"+min); 实验结果:

实验心得体会:

掌握了java的基本语法,数组的定义与使用,做这个实验要了解字符串数组的定义及字符串数组的输入方法,还有比较字符串数组的大小的调用方法等。

实验二

实验题目:

自定义一个矩形类(Rectangle),包含的属性有:长(length),宽(width),包含的方法有:关于属性的setter和getter方法,即setLength,getLength,setWidth,getWidth,计算矩形面积的方法(getArea)。

定义矩形类的子类正方形类(Square),包含的属性和方法自行确定,要求完成的功能是,能计算正方形的面积。

定义一个测试类(Test),测试矩形类和正方形类能否正确的计算面积。

以上类中属性和方法的访问权限自行确定,方法和构造方法若有参数,也自行确定。

实验代码:

public class Rectangle {

int Length; int Width; public int getLength() { } public void setLength(int length) { } public int getWidth() { return Width; Length = length; return Length; } public void setWidth(int width) {

Width = width; } int getArea(){

return Length * Width; } }

public class Square extends Rectangle{ Square(int border) {

super.setLength(border);

super.setWidth(border); } }

public class Test { public void test(){

System.out.println("请选择计算的形状的序号:1.矩形

Scanner sc = new Scanner(System.in);

int i = sc.nextInt(); int len,wid; 2.正方形");

} if(i==1){

} else if(i==2){

} System.out.print("请输入正方形的边长:"); Scanner s = new Scanner(System.in); len = s.nextInt(); Square sq = new Square(len); System.out.println("正方形面积为:"+sq.getArea()); System.out.print("请输入矩形的长:"); Scanner s = new Scanner(System.in); len = s.nextInt(); System.out.print("请输入矩形的宽:"); wid = s.nextInt(); Rectangle re = new Rectangle(); re.setLength(len); re.setWidth(wid); System.out.println("矩形面积为:"+re.getArea()); else{ } System.out.println("输入错误!");

} public static void main(String[] args) { } new Test().test(); 实验结果:

实验心得体会:

做这个实验要掌握如何定义类以及类的成员变量、类的方法,学会对象的创建、对象属性的引用和方法的调用以及如何定义和使用构造方法。掌握this的使用以及派生子类的方法,理解关键字super的含义。理解继承中属性的隐藏和方法的覆盖机制,理解在继承关系中构造方法的调用过程。

实验三

实验题目:定义一个Student类,包含姓名(name)、身高(height)、体重(weight),以及talk()方法,该方法的功能是,输出自己的身高和体重信息。

Student类实现Comparable接口,实现按照体重的大小比较两个Student对象的大小。 最后,定义一个测试类,生成一个数组,该数组有6个元素,每个元素类型是Student,调用Arrays.sort方法对该数组排序。

实验代码:

public class Student implements Comparable {

public void setName(String name) { } this.name = name; public String getName() { } return name; public Student(String name, float height, float weight) {

} super(); this.name = name; this.height = height; this.weight = weight; private String name; private float height, weight;

public float getHeight() { } return height; public void setHeight(float height) { } this.height = height; public float getWeight() { } return weight; public void setWeight(float weight) { } this.weight = weight; public void speak() { System.out.println("我是" + name + ",我的身高是" + height + ",我的体重是" + weight);

@Override }

} public int compareTo(Student o) {

} int flag; if(this.weight

public String toString() {

} return "Person [name=" + name + ", height=" + height + ", weight=" + weight + "]"; public class Test { public static void main(String[] args) {

}

} int i; Student ps[] = new Student[6]; ps[0] = new Student("张三", 170, 110); ps[1] = new Student("李四", 168, 120); ps[2] = new Student("王五", 165, 115); ps[3] = new Student("赵六", 172, 121); ps[4] = new Student("周七", 160, 100); ps[5] = new Student("郑八", 166, 119); System.out.println("排序前数组元素的序列是:"); for (i = 0; i < ps.length; i++) { } Arrays.sort(ps);//调用Java系统类中的排序方法对ps数组排序 System.out.println(" 排序后数组元素的序列是:"); for (i = 0; i < ps.length; i++) { } System.out.println(ps[i]); ps[i].speak(); 实验结果:

实验心得体会:

本次实验主要掌握对compareTo方法的重写,当返回值为0的时候此方法调用会出现错误,导致不进行排序,需要特别注意。这个实验主要使我们掌握了对类的接口的实现,和数组的比较,并使我们理解其中的细节。

上一篇:good电影高校教师成熟下一篇:党支部2012年工作计划

本站热搜