java实验的心得体会

时间:2022-11-25 02:48:12 其他心得体会 我要投稿
  • 相关推荐

java实验的心得体会

  java实验心得体会篇一:java实验总结

java实验的心得体会

  1. 设计一个Person类,包含:姓名,年龄,性别。要求:该类至多只能创建一男、一女两个对象!

  2. 设计一个测试类Test,创建若干个Person类对象,测试是否符合要求。 package test8;

  class person {

  String name;

  int age;

  char sex;

  static int flag1 = 1, flag2 = 1;

  private person(String n, int a, char s) {

  name = n;

  age = a;

  sex = s;

  if (s == 'm') {

  flag1--;

  }

  if (s == 'f') {

  flag2--;

  }

  }

  public static person newperson(String n, int a, char s) {

  if (s == 'm' && flag1 != 0) {

  person p = new person(n, a, s);

  return p;

  } else if (s == 'f' && flag2 != 0) {

  person p = new person(n, a, s);

  return p;

  } else {

  return null;

  }

  }

  public String toString() {

  return ("name:" + name + " age:" + age + " sex:" + sex);

  }

  }

  public class test {

  public static void main(String[] args) {

  person p1 , p2 , p3 ;

  p1= person.newperson("mary", 11, 'f');

  p2=person.newperson("tom", 14, 'm');

  p3=person.newperson("jane", 13, 'f');

  System.out.println(p1);

  System.out.println(p2);

  System.out.println(p3);

  }

  }

  1. 设计一个数据单元类DataUnit, 它包含学号(Number)和姓名(Name)两个数据成员。

  2. 设计两个线程,一个线程往数据单元里写信息,一个线程从数据单元里读信息。要求使用线程同步技术,使得每写一次就往外读一次。例如,写和读的数据序列为:

  Write: 1, Name1

  Read: 1, Name1

  Write: 2, Name2

  Read: 2, Name2

  ...

  package test7;

  class DataUnit{

  int number;

  String name;

  int max;

  boolean flag=false;

  public DataUnit(int number, String name,int max){

  this.name=name;

  this.max=max;

  }

  public synchronized void in(){

  if(flag){

  try{

  wait();

  }

  catch(Exception e){

  }

  }

  System.out.println("Write number:"+(++number)+"write name:"+(number));flag=true;

  notify();

  }

  public synchronized void out(){

  if(!flag){

  try{

  wait();

  }

  catch(Exception e){

  }

  }

  System.out.println("read number:"+(number)+"read name:"+(number));

  flag=false;

  notify();

  }

  }

  class write extends Thread{

  DataUnit x=null;

  public write(DataUnit x){

  this.x=x;

  }

  public void run(){

  while(x.number<x.max){

  x.in();

  }

  }

  }

  class read extends Thread{

  DataUnit x=null;

  public read(DataUnit x){

  this.x=x;

  }

  public void run(){

  while(x.number<=x.max){

  x.out();

  }

  }

  }

  public class test7 {

  public static void main(String[] args) {

  DataUnit x=new DataUnit(0,"mary",10);

  new write(x).start();

  new read(x).start();

  }

  }

  设计一个线程Thread类的子类DataThread, 使用DataThread构建两个线程,分别输出50以内的奇数和偶数,并使两个线程并发执行。

  package test6;

  class datathread extends Thread{

  private int number;

  String flag;

  public datathread(int num){

  number=num;

  if(number==-2)

  flag="even";

  else

  flag="odd";

  }

  public void run(){

  int result=number;

  System.out.println("thread "+flag+" starts!");

  while(result+2<=50){

  result=result+2;

  System.out.println("an "+flag+" number:"+result);

  }

  System.out.println("thread "+flag+" ends!");

  }

  }

  public class Main {

  public static void main(String[] args) {

  System.out.println("main thread starts!");

  datathread thread1=new datathread (-2);

  datathread thread2=new datathread (-1);

  thread1.start();

  thread2.start();

  System.out.println("main thread ends!");

  }

  }

  1. 设计一个学生Student类,包含学号(Sno),姓名(Name),所在系(Dept)等属性。创建若干Student类的对象,添加到一个向量Vector中,并遍历输出该向量各元素值。

  package test5;

  import java.util.*;

  public class Student {

  String sno;

  String name;

  String dept;

  public Student(String no,String n,String p){

  this.sno=no;

  this.name=n;

  this.dept=p;

  }

  public String toString(){

  return("sno:"+sno+" name:"+name+" dept:"+dept);

  }

  public static void main(String[] args) {

  Student stu[];

  stu=new Student[3];

  stu[0]=new Student("001","Mary","SS");

  stu[1]=new Student("002","Tom","CS");

  stu[2]=new Student("003","Hellen","IS");

  Vector v=new Vector();

  for(int i=0;i<stu.length;i++){

  v.add(stu[i]);

  }

  Iteratornum=v.iterator();

  while(num.hasNext()){

  System.out.println(num.next());

  }

  }

  }

  2. 已知:哈希表HashTablehTable = new

  HashTable()。编程遍历hTable,要求写出两种方式。 package test5hash;

  import java.util.*;

  import java.lang.Iterable;

  public class Hash {

  public static void main(String[] args) {

  HashtablehTable = new Hashtable();hTable.put(001, "a");

  hTable.put(002, "b");

  hTable.put(003, "c");

  Iteratori = (Iterator)hTable.keys();

  while(i.hasNext())

  {

  int j = i.next();

  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。在这些概念性(转 载于: :java实验心得体会)知识点弄明白后,在解决实际问题时,碰到了输入年月日计算车龄的问题,我的解决办法如下:

  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到if(r == 0) shape = cir; else shape = squ; shape.testShape(shape); //同一条语句产生不同的执行结果,多态1.00的随机数,乘2取整后非0即1 性。

  实验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实训心得

  在本学期的二周时间内,我们在学校机房进行了为期二周的JAVA实训。现在即将结束了,回首本学期的java学习,重点还是在学习概念等一些常识性的东西,也学到平常在课堂中没有学到的东西,在JAVA API中又多认识了几种类,使我对JAVA产生了浓厚的兴趣。两周的时间说长也不长,在这两周中,我们的实训任务是仓库管理系统,在演示过程中,并没有觉得它有很难,但在实际编程过程中,却遇到了各种各样的错误,这也多亏了老师的指点和班级同学的帮忙,使我一步步克服了实训过程中遇到的困难。虽然我所做的系统并没有实现所有功能,但是我觉得自己进步了,很多原来都不懂的东西现在都已经了解了,也培养了我的团队合作精神,让我感受到了集体的温暖。实训的过程与课堂上的讲课比,更为有趣,因为可以真正的自己动手操作,使我对老师上课所讲的内容有了更深一步的了解,使我在以后的编程中可以灵活运用。我期待以后有更多类似的实训,使我们可以多掌握一项技能,也可以让我们在以后找工作中可以有更多的实践经验。学知识可不能凭自己的爱好和一时兴趣,要一步一个脚印,认认真真,踏踏实实,理论与实践相结合,在扎实掌握课本实例和内容之后,有一定的扩展阅读和课外学习,充分全面的了解JAVA的应用和扩展运用。

  在我所学的语言当中,我自认为JAVA是一门比较强大的面向对象的编程语言,不仅仅因为它的跨平台性,更多的是因为它的灵活多变

  和实用性较强,可以说比较的经典和强悍。所以学好java语言有很大的用处,这次实训,我们更多学到的是不懂就问和自己应该尽自己的全力去尝试,哪怕失败,只要自己尽自己的全力,和身边同学一起探讨而不是抄袭,团结合作,发挥团队意识,最后在自己的努力下,终于运行成功,这种成就感美不可言,心情愉悦至极。

  最后终于要结束了,大家都有种释怀的感觉,当然我想我更多的是兴奋和自己掌握了知识之后的饱满感,学知识就像吃东西一样,吃饱了就应该好好的消化。要不断的温习和运用,做到举一反三,将所学知识充分融入到平时的学习生活中去,为以后的工作做好坚实的基础。感谢学校和老师能够为我们提供这次机会,让我们更好的掌握和了解JAVA这门语言!

【java实验的心得体会】相关文章:

java语言程序设计实验报告10篇12-08

java培训的心得体会04-01

java培训的心得体会12-21

java实习心得体会11-04

java培训心得体会05-07

java实训心得体会02-25

java实训心得体会03-08

JAVA实训心得体会12-29

Java与Java web有什么不同02-23

Java与Java web有什么不同01-22