安徽工业大学java实验报告_第1页
安徽工业大学java实验报告_第2页
安徽工业大学java实验报告_第3页
安徽工业大学java实验报告_第4页
安徽工业大学java实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA实验报告实验1:利用JAVA反射技术分析类结构实验内容:运行程序,指定一个要分析的类名称,如java.lang.Double,输出类中声明的属性、方法、构造函数等。结果分析:1.分析程序运行时的输出结果。输出的结果中显示了被分析类的方法与变量,包括这些方法与变量的修饰符2.分析与JAVA反射技术相关的几个类的作用:java.lang.reflect.Constructor;Constructor 提供关于类的单个构造方法的信息以及对它的访问权限。java.lang.reflect.Field;Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(

2、静态)字段或实例字段。java.lang.reflect.Method;Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。java.lang.reflect.Modifier;Modifier 类提供了 static 方法和常量,对类和成员访问修饰符进行解码。修饰符集被表示为整数,用不同的位位置 (bit position) 表示不同的修饰符。定义一个自己的类,如Employee类,定义几个属性、方法、构造函数,要求成员的属性包含Public、Private、Protected、Static等。运行该程序分析一下你自己

3、定义的类结构。class Employeepublic String name ;public String id;private int age ;static protected int salary =100;Employee()private void Employee(String xm,String bh,int nl) name=xm;id=bh;age=nl;protected double Employee(int gz)return gz+salary;分析:先调用一个无参数的构造函数构造,然后再调用该构造函数private void Employee(String xm,

4、String bh,int nl)构造一个对象,最后调用构造函数计算总的薪水。实验2:利用JAVA反射技术分析对象结构实验内容:运行示例程序,分析Integer数组对象的结构;改写程序分析一下自定义的类对象,如Employee类。源代码:public abstract class People double salary;String name;int year,mouth,day;public abstract double getSalary();public abstract void setSalary(double salary);class Employee extends Peo

5、pleEmployee(String name,double salary,int year,int mouth,int day)this.salary = salary; = name;this.year = year;this.mouth = mouth;this.day = day;Employee()public double getSalary()return salary;public void setSalary(double salary)this.salary = salary;class Manager extends Peopleprivate doub

6、le bonus;Manager(String name,double salary,int year,int mouth,int day)this.salary = salary; = name;this.year = year;this.mouth = mouth;this.day = day;bonus= 0;public double getSalary()return salary+bonus;public void setSalary(double salary)this.salary = salary;public void setBonus(double bo

7、nus)this.bonus = bonus;分析:代码中Methodl类就相当于一个指向类中方法的指针,Class类通过getMethod方法获取这个Method类,之后Method类的对象可以通过invoke方法来调用这个方法。实验4:利用TreeSet实现集合元素排序独立编程实现如下功能:定义一个自己的类,如Employee类,定义几个属性(如name,salary,hiredate等),随机构造10个Employee类对象,添加到三个不同的TreeSet中,要求三个TreeSet输出的Employee对象分别按照姓名,薪水,雇佣日期排序。源代码:import java.util.*;c

8、lass NameComparator implements Comparator public int compare(Employee a, Employee b) String nameA = a.getname(); String nameB = b.getname();return nameA.compareTo(nameB); class DataComparator implements Comparator public int compare(Employee a, Employee b) String dateA = a.getdate(); String dateB =

9、b.getdate();return dateA.compareTo(dateB); class Employee implements Comparableint salary=0;String name;String date; Employee(String n,int s,String i)salary=s;name=n;date=i;public String getname() return name;public String getdate()return date;Overridepublic int compareTo(Object o) / TODO Auto-gener

10、ated method stubEmployee em=(Employee)o;return (this.salary-em.salary);public class sy4public static void main(String args) TreeSetmytree=new TreeSet();Employee em0,em1,em2,em3,em4,em5,em6,em7,em8,em9;em0=new Employee(张三,1500,1231);em1=new Employee(李四,1000,1201);em2=new Employee(王武,1001,1202);em3=ne

11、w Employee(流云,1002,1203);em4=new Employee(张杰,1200,1101);em5=new Employee(华荣,1300,1025);em6=new Employee(郭靖,1100,1110);em7=new Employee(黄蓉,1150,1205);em8=new Employee(黄蕾,2500,1120);em9=new Employee(马凯,1320,1221);mytree.add(em0);mytree.add(em1);mytree.add(em2);mytree.add(em3);mytree.add(em4);mytree.ad

12、d(em5);mytree.add(em6);mytree.add(em7);mytree.add(em8);mytree.add(em9);System.out.println(按工资排序);System.out.println();Iteratores=mytree.iterator();while(es.hasNext()Employee ems=es.next();System.out.println( + + +ems.date+ +ems.salary);NameComparator comp = new NameComparator(); SortedSet so

13、rtByname = new TreeSet(comp);sortByname.add(em0);sortByname.add(em1);sortByname.add(em2);sortByname.add(em3);sortByname.add(em4);sortByname.add(em5);sortByname.add(em6);sortByname.add(em7);sortByname.add(em8);sortByname.add(em9);System.out.println();System.out.println(按姓名排序);Iteratoren=sortByname.it

14、erator();while(en.hasNext()Employee emn=en.next();System.out.println( ++ +emn.date+ +emn.salary);DataComparator comp1 = new DataComparator(); SortedSet sortBydate = new TreeSet(comp1);sortBydate.add(em0);sortBydate.add(em1);sortBydate.add(em2);sortBydate.add(em3);sortBydate.add(em4);sortByda

15、te.add(em5);sortBydate.add(em6);sortBydate.add(em7);sortBydate.add(em8);sortBydate.add(em9);System.out.println();System.out.println(按雇佣日期排序);Iteratorda=sortByname.iterator();while(da.hasNext()Employee dat=da.next();System.out.println( ++ +dat.date+ +dat.salary);运行结果:实验5:多线程同步之团结就是力量实验问题描述:四名

16、学生值日,教室里共有500套桌椅需要擦净,四人没有进行明确分工,能者多劳,团结一致,最终将教室里的桌椅擦得干干净净。程序要求:编写多线程程序,为每名学生创建单独的线程,以桌椅为操作对象,要尽量做到分工合理,并记录每人负责的桌椅数,擦完500套桌椅后即退出应用程序。要点:1、 每个学生对象都是同一个线程类对象,如何体现能者多劳?2、 多个学生线程在劳动时要么擦桌子,要么擦椅子,如何实现对共享的数据(500套桌椅)同步访问,如果学生甲在擦桌子,是否允许学生乙擦椅子?源程序:import java.util.Random;public class Cooperation public static

17、void main(String args) WorkStudent2 ws1 = new WorkStudent2(1, 10);WorkStudent2 ws2 = new WorkStudent2(2, 20);WorkStudent2 ws3 = new WorkStudent2(3, 30);WorkStudent2 ws4 = new WorkStudent2(4, 40);new Thread(ws1).start();new Thread(ws2).start();new Thread(ws3).start();new Thread(ws4).start();class Zhu

18、oYiint desk=0,0,0,0,0;int chair=0,0,0,0,0;private int chairCount = 500;private int deskCount = 500;public synchronized Boolean distribute(int id,long sleeptime)int chairs = 1;int desks = 1;Random rdm = new Random(System.currentTimeMillis();if(rdm.nextInt() % 2 =0)if(chairCount 0)chairs = chairs - 1;while(chairs 0)desks = desks - 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论